1 #ifndef STACK_TEST_H 2 #define STACK_TEST_H 3 4 #include <cxxtest/TestSuite.h> 5 #include <stack.h> 6 7 class stack_test : public CxxTest::TestSuite 8 { 9 10 private: 11 stack_t* stack; 12 public: 13 setUp()14 void setUp() { 15 stack = stack_create(); 16 } 17 tearDown()18 void tearDown() { 19 stack_free(stack); 20 } 21 test_create_stack()22 void test_create_stack() { 23 TS_ASSERT_DIFFERS((stack_t*)0, stack); 24 } 25 test_new_stack_is_empty()26 void test_new_stack_is_empty() { 27 TS_ASSERT_EQUALS(0, stack_size(stack)); 28 } 29 test_one_push_add_one_to_size()30 void test_one_push_add_one_to_size() { 31 stack_push(stack, 1); 32 TS_ASSERT_EQUALS(1, stack_size(stack)); 33 } 34 test_push_pop_doesnt_change_size()35 void test_push_pop_doesnt_change_size() { 36 stack_push(stack, 1); 37 (void)stack_pop(stack); 38 TS_ASSERT_EQUALS(0, stack_size(stack)); 39 } 40 test_peak_after_push()41 void test_peak_after_push() { 42 stack_push(stack, 1); 43 TS_ASSERT_EQUALS(1, stack_peak(stack)) 44 } 45 test_initial_capacity_is_positive()46 void test_initial_capacity_is_positive() { 47 TS_ASSERT(stack_capacity(stack) > 0); 48 } 49 test_pop_on_empty()50 void test_pop_on_empty() { 51 TS_ASSERT_EQUALS(0, stack_pop(stack)); 52 TS_ASSERT_EQUALS(0, stack_size(stack)); 53 } 54 test_peak_on_empty()55 void test_peak_on_empty() { 56 TS_ASSERT_EQUALS(0, stack_peak(stack)); 57 } 58 test_capacity_gte_size()59 void test_capacity_gte_size() { 60 TS_ASSERT_LESS_THAN_EQUALS(stack_size(stack), stack_capacity(stack)); 61 int init_capacity = stack_capacity(stack); 62 for (int i=0; i < init_capacity + 1; i++) { 63 stack_push(stack, i); 64 } 65 TS_ASSERT_LESS_THAN_EQUALS(stack_size(stack), stack_capacity(stack)); 66 } 67 68 }; 69 70 #endif // STACK_TEST_H 71 72