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