1 changed files with 289 additions and 0 deletions
			
			
		| @ -0,0 +1,289 @@ | |||
| package testat; | |||
| 
 | |||
| import static org.junit.jupiter.api.Assertions.assertEquals; | |||
| 
 | |||
| import java.util.EmptyStackException; | |||
| import java.util.Set; | |||
| 
 | |||
| import org.junit.jupiter.api.BeforeAll; | |||
| import org.junit.jupiter.api.BeforeEach; | |||
| import org.junit.jupiter.api.Test; | |||
| 
 | |||
| /** | |||
|  *  | |||
|  * @author Christian | |||
|  * | |||
|  */ | |||
| public abstract class ASimpleStackTestBase<T> { | |||
| 
 | |||
| 	protected ISimpleStack<T> sstack; | |||
| 	protected boolean temp1 = false, temp2=true; | |||
| 
 | |||
| 	protected abstract ISimpleStack<T> getInstance(); | |||
| 	protected IAction<T> act1, act2; | |||
| 	 | |||
| 	protected T s1; | |||
| 	protected T s2; | |||
| 	protected T s3; | |||
| 	protected T s4; | |||
| 	protected T s5; | |||
| 	protected T s6; | |||
| 	protected T s7; | |||
| 	protected T s8; | |||
| 	protected T s9; | |||
| 	protected T s10; | |||
| 	 | |||
| 	abstract protected void init() ; | |||
| 
 | |||
| 	@BeforeAll | |||
| 	static void setUpBeforeClass() throws Exception { | |||
| 
 | |||
| 	} | |||
| 
 | |||
| 	@BeforeEach | |||
| 	void setUp() throws Exception { | |||
| 		init(); | |||
| 		sstack = getInstance(); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPush_1_Null() { | |||
| 		assertEquals(0, sstack.push(null)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPush_2_Single() { | |||
| 		assertEquals(1, sstack.push(s1)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPush_3_Multiple() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 		sstack.push(s6); | |||
| 		sstack.push(s7); | |||
| 
 | |||
| 		assertEquals(8, sstack.push(s8)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testSize_1_Initial() { | |||
| 		assertEquals(0, sstack.size()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testSize_2_AfterPush() { | |||
| 		sstack.push(s1); | |||
| 		assertEquals(1, sstack.size()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testSize_3_AfterPushs() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 
 | |||
| 		assertEquals(5, sstack.size()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testGet_1_Simple() { | |||
| 		sstack.push(s1); | |||
| 		assertEquals(s1, sstack.get(0)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testGet_2_Multiple() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 
 | |||
| 		assertEquals(s3, sstack.get(2)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testGet_3_ErrorHandling_1() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		try { | |||
| 			sstack.get(-1); | |||
| 		} catch (Exception e) { | |||
| 			assertEquals(true, e instanceof IndexOutOfBoundsException); | |||
| 			assertEquals(false, e instanceof EmptyStackException); | |||
| 		} finally { | |||
| 			assertEquals(2, sstack.size()); | |||
| 		} | |||
| 
 | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testGet_4_ErrorHandling_2() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		try { | |||
| 			sstack.get(5); | |||
| 		} catch (Exception e) { | |||
| 			assertEquals(true, e instanceof IndexOutOfBoundsException); | |||
| 		} finally { | |||
| 			assertEquals(2, sstack.size()); | |||
| 		} | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPop_1_Initial() { | |||
| 		assertEquals(null, sstack.pop()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPop_2_Single() { | |||
| 		sstack.push(s1); | |||
| 		assertEquals(s1, sstack.pop()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPop_3_Multiple() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 		assertEquals(s5, sstack.pop()); | |||
| 		assertEquals(s4, sstack.pop()); | |||
| 		assertEquals(s3, sstack.pop()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPush_4_Existing() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 		sstack.push(s2); | |||
| 
 | |||
| 		assertEquals(s2, sstack.pop()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testPush_5_AfterPop() { | |||
| 		// TODO Test Push after Pop
 | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 		sstack.pop(); | |||
| 		sstack.push(s7); | |||
| 
 | |||
| 		assertEquals(6, sstack.push(s8)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testGet_5_AfterPop() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 		sstack.pop(); | |||
| 		sstack.pop(); | |||
| 		sstack.pop(); | |||
| 		sstack.push(s6); | |||
| 		sstack.push(s7); | |||
| 
 | |||
| 		assertEquals(s6, sstack.get(2)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testRemove_1_One() { | |||
| 		sstack.push(s1); | |||
| 		assertEquals(s1, sstack.remove(0)); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testRemove_2_Index() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 
 | |||
| 		try { | |||
| 			sstack.remove(-1); | |||
| 		} catch (Exception e) { | |||
| 			assertEquals(true, e instanceof IndexOutOfBoundsException); | |||
| 		} finally { | |||
| 			assertEquals(2, sstack.size()); | |||
| 		} | |||
| 
 | |||
| 		try { | |||
| 			sstack.remove(5); | |||
| 		} catch (Exception e) { | |||
| 			assertEquals(true, e instanceof IndexOutOfBoundsException); | |||
| 		} finally { | |||
| 			assertEquals(2, sstack.size()); | |||
| 		} | |||
| 
 | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testRemove_4_Multiple() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.push(s4); | |||
| 		sstack.push(s5); | |||
| 
 | |||
| 		assertEquals(s3, sstack.remove(2)); | |||
| 		assertEquals(4, sstack.size()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testContains_1() { | |||
| 		assertEquals(false, sstack.contains(s2)); | |||
| 
 | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 
 | |||
| 		assertEquals(false, sstack.contains(s4)); | |||
| 		assertEquals(true, sstack.contains(s2)); | |||
| 
 | |||
| 		assertEquals(true, sstack.contains(s3)); | |||
| 		assertEquals(s3, sstack.pop()); | |||
| 		assertEquals(false, sstack.contains(s3)); | |||
| 	} | |||
| 	 | |||
| 	@Test | |||
| 	public void testForAll_1() { | |||
| 		assertEquals(false, temp1); | |||
| 		assertEquals(true, temp2); | |||
| 
 | |||
| 		this.sstack.forAll(act1); | |||
| 		this.sstack.forAll(act2); | |||
| 
 | |||
| 		assertEquals(true, temp1); | |||
| 		assertEquals(true, temp2); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testSize_4_AfterRemove_1() { | |||
| 		sstack.push(s1); | |||
| 		sstack.pop(); | |||
| 		assertEquals(0, sstack.size()); | |||
| 	} | |||
| 
 | |||
| 	@Test | |||
| 	public void testSize_4_AfterRemove_2() { | |||
| 		sstack.push(s1); | |||
| 		sstack.push(s2); | |||
| 		sstack.push(s3); | |||
| 		sstack.pop(); | |||
| 		assertEquals(2, sstack.size()); | |||
| 	} | |||
| 
 | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue