Grafalgo
Library of useful data structures and algorithms
|
00001 00009 #include "Dlist.h" 00010 #include "Utest.h" 00011 00012 using namespace grafalgo; 00013 00014 void basicTests() { 00015 int n1 = 10; Dlist l1(n1); 00016 00017 Utest::assertTrue(l1.empty(), "initial list not empty"); 00018 string s; 00019 cout << "writing empty list: " << l1.toString(s) << endl; 00020 00021 for (int i = 1; i <= n1; i++) 00022 Utest::assertTrue(!l1.member(i), 00023 "member returns true on empty list"); 00024 00025 l1.addFirst(1); 00026 cout << "writing one item list: " << l1.toString(s) << endl; 00027 Utest::assertEqual(s, "[ a ]", 00028 "mismatch on adding first item"); 00029 00030 Utest::assertTrue(!l1.empty(), 00031 "list with one item reports empty"); 00032 Utest::assertTrue(l1.member(1), 00033 "member 1 not reported in list"); 00034 00035 for (int i = 1; i <= n1; i += 2) l1.addLast(i); 00036 cout << "writing longer list: " << l1.toString(s) << endl; 00037 Utest::assertEqual(s, "[ a c e g i ]", 00038 "mismatch on list [ a c e g i ]"); 00039 00040 Utest::assertTrue(l1.member(5), 00041 "member 5 not reported in list"); 00042 Utest::assertTrue(!l1.member(4), 00043 "non-member 4 is reported in list"); 00044 00045 l1.removeFirst(); 00046 Utest::assertEqual(l1.toString(s), "[ c e g i ]", 00047 "mismatch on list [ c e g i ]"); 00048 Utest::assertTrue(!l1.member(1), 00049 "non-member 1 is reported in list"); 00050 l1.removeLast(); 00051 Utest::assertEqual(l1.toString(s), "[ c e g ]", 00052 "mismatch on list [ c e g ]"); 00053 00054 l1.remove(5); 00055 Utest::assertEqual(l1.toString(s), "[ c g ]", 00056 "mismatch on list [ c g ]"); 00057 00058 l1.removeLast(); 00059 Utest::assertEqual(l1.toString(s), "[ c ]", 00060 "mismatch on list [ c ]"); 00061 00062 Utest::assertTrue(!l1.empty(), 00063 "non-empty list reported as empty"); 00064 00065 l1.removeFirst(); 00066 Utest::assertEqual(l1.toString(s), "[ ]", "mismatch on list [ ]"); 00067 00068 Utest::assertTrue(l1.empty(), "empty list reported as non-empty"); 00069 00070 List l2(n1); l2.addFirst(1); l2.addFirst(2); l2.addFirst(3); 00071 Utest::assertEqual(l2.toString(s), "[ c b a ]", 00072 "mismatch on list [ c b a ]"); 00073 int n2 = 27; l2.expand(n2); 00074 Utest::assertEqual(l2.toString(s), "[ 3 2 1 ]", 00075 "mismatch on list [ 3 2 1 ]"); 00076 00077 l2.resize(30); l2.addFirst(1); l2.addFirst(2); l2.addFirst(3); 00078 cout << "writing numeric list: " << l2.toString(s) << endl; 00079 Utest::assertEqual(l2.toString(s), "[ 3 2 1 ]", 00080 "mismatch on list [ 3 2 1 ]"); 00081 } 00082 00086 int main() { 00087 cout << "running basic tests\n"; 00088 basicTests(); 00089 cout << "basic tests passed\n"; 00090 00091 // add more systematic tests for each individual method 00092 }