package ubs;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;


/*
   This is an example of a TestSuite, the other component
   in the JUnit Test composite pattern
*/

public class BoundedStackJunitTest extends TestCase
{
  
   private BoundedStack numbers;
   private BoundedStack otherNumbers;

   public BoundedStackJunitTest(String name) {
      super(name);
   }

   public static Test suite()
   /* Assembles and returns a test suite containing all known tests.
      New tests should be added here!
      @return A non-null test suite.
   */
   {

      TestSuite suite = new TestSuite(BoundedStackJunitTest.class);


      return suite;
   }
   
   protected void setUp()
   /* Sets up the text fixture.
      Called before every test case method.
   */
   {
     numbers = new BoundedStack();
     otherNumbers = new BoundedStack();
   }

   protected void tearDown()
   /* Tears down the text fixture.
      Called after every test case method.
   */
   {
      numbers = null;
    otherNumbers = null;
   }
   
   
   public void testEmpty()
   /* Tests the emptying of the stack.
   */
   {
    int k = 3;
    numbers.push(k);
      assertTrue!numbers.isEmpty() );
    numbers.pop();
    assertTruenumbers.isEmpty() );
   }

   public void testFull()
   /* Tests the emptying of the stack.
   */
   {
    int k = 3;
    int j = 2;
    numbers.push(k);
      assertTrue!numbers.isFull() );
    numbers.push(j);
    assertTruenumbers.isFull() );
    numbers.pop();
    assertTrue!numbers.isFull() );
   }

   public void testMax()
   /* Tests whether is a stack is full after a push of the stack.
   */
   {
    int k = 3;
  //max size is 2
    assertTruenumbers.maxSize() == );          
    numbers.push(k);
    assertTruenumbers.maxSize() == );
   }

   public void testMember()
   /* Tests the emptying of the stack.
   */
   {
    int k = 3;
    int j = 2;
    numbers.push(k);
      assertTruenumbers.isMember(3) );
    numbers.push(j);
    assertTruenumbers.isMember(2) );
    numbers.pop();
    assertTrue!numbers.isMember(2) );
   }
   
   public void testGetNumberOfElements()
   /* Tests the num elem of a stack.
   */
  {
      int k = 3;
    int j = 2;
    int n = 1;
      assertTrue(numbers.getNumberOfElements() == );
    numbers.push(k);
    assertTruenumbers.getNumberOfElements() == 1  );
    numbers.push(k);
    assertTruenumbers.getNumberOfElements() == 1  );
    numbers.push(j);
    assertTruenumbers.getNumberOfElements() == 2  );
    numbers.push(n);
    assertTruenumbers.getNumberOfElements() == 2  );
  }

   public void testTop()
   /* Tests the peeking at the top of the stack.
   */
   {
      int k = 3;
    int j = 2;
    int n = 1;
    numbers.push(k);
      assertTruenumbers.top() == k );
    numbers.push(j);
    assertTruenumbers.top() == j );
    //max stack == 2
    numbers.push(n);
    assertTruenumbers.top() == j );
   }
   
   public void testPop()
   /* Tests the popping of the stack.
   */
   {
    int k = 3
    numbers.push(k);
    assertTrue(numbers.getNumberOfElements() == 1);
    assertTrue(numbers.isMember(k));
    numbers.pop();
      assertTrue(numbers.getNumberOfElements() == 0);
    assertTrue(!numbers.isMember(k));
   }

   public void testPush()
   /* Tests the pushing of the stack.
   */
   {
    int k = 3;
    int j = 2;
    numbers.push(k);
    assertTrue(numbers.getNumberOfElements() == 1);
    assertTrue(numbers.isMember(k));
    numbers.push(k);
    assertTrue(numbers.getNumberOfElements() == 1);
    assertTrue(numbers.isMember(k));
    numbers.push(j);
    assertTrue(numbers.getNumberOfElements() == 2);
    assertTrue(numbers.isMember(j));
    assertTrue(numbers.isMember(k));
    assertTrue(numbers.top() == j);
    numbers.push(k);
    assertTrue(numbers.getNumberOfElements() == 2);
    assertTrue(numbers.isMember(j));
    assertTrue(numbers.isMember(k));
    assertTrue(numbers.top() == k);
   }



   
   


   public static void main(String args[])
   /* select which runner to use and fire off the test suite
   */
   {
   /* in here we choose which runner to invoke and pass
      it the test case or suite we have built
   */
      String[] testCaseName = {BoundedStackJunitTest.class.getName()};
      junit.textui.TestRunner.main(testCaseName);
      //junit.swingui.TestRunner.main(testCaseName);
      //junit.ui.TestRunner.main(testCaseName);
      System.exit(0);
   }

}