Grafalgo
Library of useful data structures and algorithms
/Users/jst/src/grafalgo/cpp/dataStructures/basic/unit/testDlist.cpp
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 }
 All Classes Files Functions Variables Typedefs Friends