// main.cpp: phone book test code #include "phonebook.h" #include #include using namespace std; void test_entry(); void test_phonebook(); int main() { test_entry(); test_phonebook(); cout << "All tests passed." << endl; return 0; } void test_entry() { Entry jane("jane", "123abc"); assert(jane.name() == "jane"); assert(jane.number() == "123abc"); jane.updateNumber("987654321"); assert(jane.number() == "987654321"); } void test_phonebook() { PhoneBook pb; Entry *entries[5]; entries[0] = new Entry("james", "007"); entries[1] = new Entry("amy", "1111"); entries[2] = new Entry("zhou", "222-2222"); entries[3] = new Entry("chuck", "3"); entries[4] = new Entry("doc", "12345"); assert(pb.empty()); // check add pb.add(entries[0]); assert(!pb.empty()); assert(pb.lookup("james") == entries[0]); for(int i = 0; i < 5; ++i) pb.add(entries[i]); for(int i = 0; i < 5; ++i) { assert(pb.lookup(entries[i]->name()) == entries[i]); // check Entry::number assert(pb.lookup(entries[i]->name())->number() == entries[i]->number()); } // check removal pb.remove("chuck"); assert(pb.lookup("check") == nullptr); pb.remove("oops"); // remove something that doesn't exist // remove all but doc - not this tries to re-remove doc for(int i = 0; i < 4; ++i) { pb.remove(entries[i]->name()); assert(pb.lookup(entries[i]->name()) == nullptr); } assert(pb.lookup("doc") == entries[4]); // remove last item pb.remove("doc"); assert(pb.lookup("doc") == nullptr); // add and remove again (lots of bugs show up this way!) pb.add(new Entry("test", "all")); assert(pb.lookup("test")->name() == "test"); assert(pb.lookup("test")->number() == "all"); pb.remove("test"); assert(pb.lookup("test") == nullptr); assert(pb.empty()); }