--- UnitTest.cpp 2004/05/14 07:13:01 7 +++ UnitTest.cpp 2004/05/15 22:41:10 14 @@ -4,16 +4,35 @@ // // $Id$ -#include #include +#include +#include #include "DoublyLinkedList.hpp" using namespace std; -int main(int argc, char* argv[]) +template +inline bool contains(const Type& value, DoublyLinkedList& list) { - cout.setf(ios_base::boolalpha); + for (Iterator itor(list.iterator()); !itor.end(); itor++) + { + if (*itor == value) return true; + } + + return false; +} +class VowelVisitor : public Visitor +{ +private: + ostream* os; +public: + VowelVisitor(ostream& os) { this->os = &os; } + void visit(const string& value) { if (value.find_first_of("aAeEiIoOuU") == 0) *os << value << '\n'; } +}; + +int main(int argc, char* argv[]) +{ DoublyLinkedList list; list.addFront(1); @@ -23,26 +42,52 @@ int main(int argc, char* argv[]) // 4 1 2 5 - cout << "list.contains(1) = " << list.contains(1) << '\n' - << "list.contains(2) = " << list.contains(2) << '\n' - << "list.contains(3) = " << list.contains(3) << '\n' - << "list.contains(4) = " << list.contains(4) << '\n' - << "list.contains(5) = " << list.contains(5) << '\n'; + assert(list.contains(1) == true); + assert(list.contains(2) == true); + assert(list.contains(3) == false); + assert(list.contains(4) == true); + assert(list.contains(5) == true); list.removeFirst(2); // 4 1 5 - cout << "list.contains(2) = " << list.contains(2) << '\n' - << "list.contains(5) = " << list.contains(5) << '\n'; + assert(list.contains(2) == false); + assert(list.contains(5) == true); - Iterator itor(list.iterator()); + ostringstream sout; - do + for (Iterator itor(list.iterator()); !itor.end(); itor++) { - cout << *itor << '\n'; + sout << *itor << '\n'; } - while ((itor++).next()); + + assert(sout.str() == "4\n1\n5\n"); + sout.str(""); + assert(contains(3, list) == false); + assert(contains(4, list) == true); + + DoublyLinkedList words; + + words.addFront("Douglas"); + words.addBack("Allen"); + words.addFront("Edward"); + words.addBack("attack"); + words.addFront("Thrift"); + + for (Iterator itor(words.iterator()); !itor.end(); itor++) + { + if (itor->find_first_of("aAeEiIoOuU") == 0) sout << *itor << '\n'; + } + + assert(sout.str() == "Edward\nAllen\nattack\n"); + sout.str(""); + + VowelVisitor vowels(sout); + + words.accept(dynamic_cast*>(&vowels)); + + assert(sout.str() == "Edward\nAllen\nattack\n"); return 0; }