void print(DictionaryList& dl) { if (dl.size() == 0) cout << " List is EMPTY.\n"; for (dl.go_to_first(); dl.cursor_ok(); dl.step_fwd()) { cout << " " << dl.cursor_key(); cout << " " << dl.cursor_datum().c_str() << '\n'; } }
void test_copying() { DictionaryList one; // Copy an empty list. DictionaryList two; assert(two.size() == 0); // Copy a list with three entries and a valid cursor. one.insert(319,"Randomness"); one.insert(315,"Shocks"); one.insert(335,"ParseErrors"); one.go_to_first(); one.step_fwd(); DictionaryList three(one); assert(three.cursor_datum().isEqual("Randomness")); one.remove(335); cout << "Printing list--keys should be 315, 319\n"; print(one); cout << "Printing list--keys should be 315, 319, 335\n"; print(three); // Assignment operator check. one = two = three = three; one.remove(319); two.remove(315); cout << "Printing list--keys should be 315, 335\n"; print(one); cout << "Printing list--keys should be 319, 335\n"; print(two); cout << "Printing list--keys should be 315, 319, 335\n"; print(three); cout << "***----Finished tests of copying----------------------***\n\n"; }
void test_operator_overloading(DictionaryList& dl) { DictionaryList dl2 = dl; dl.go_to_first(); dl.step_fwd(); dl2.go_to_first(); cout << "\n\nTesting a few comparison and insertion operators." << endl; // Needs to overload >= and << (insertion operator) in class Mystring if (dl.cursor_datum() >= (dl2.cursor_datum())) cout << endl << dl.cursor_datum() << " is greater than or equal " << dl2.cursor_datum(); else cout << endl << dl2.cursor_datum() << " is greater than " << dl.cursor_datum(); // Needs to overload <= for Mystring if(dl.cursor_datum() <= (dl2.cursor_datum())) cout << dl.cursor_datum() << " is less than or equal" << dl2.cursor_datum(); else cout << endl << dl2.cursor_datum() << " is less than " << dl.cursor_datum(); // Needs to overload != for Mystring if(dl.cursor_datum() != (dl2.cursor_datum())) cout << endl << dl.cursor_datum() << " is not equal to " << dl2.cursor_datum(); else cout << endl << dl2.cursor_datum() << " is equal to " << dl.cursor_datum(); // Needs to overload > for Mystring if(dl.cursor_datum() > (dl2.cursor_datum())) cout << endl << dl.cursor_datum() << " is greater than " << dl2.cursor_datum(); else cout << endl << dl.cursor_datum() << " is not greater than " << dl2.cursor_datum(); // Needs to overload < for Mystring if(dl.cursor_datum() < (dl2.cursor_datum())) cout << endl << dl.cursor_datum() << " is less than " << dl2.cursor_datum(); else cout << endl << dl.cursor_datum() << " is not less than " << dl2.cursor_datum(); // Needs to overload == for Mystring if(dl.cursor_datum() == (dl2.cursor_datum())) cout << endl << dl.cursor_datum() << " is equal to " << dl2.cursor_datum(); else cout << endl << dl.cursor_datum() << " is not equal to " << dl2.cursor_datum(); cout << endl << "\nUsing square bracket [] to access elements of Mystring objects. "; char c = dl.cursor_datum()[1]; cout << endl << "The second element of " << dl.cursor_datum() << " is: " << c; dl.cursor_datum()[1] = 'o'; c = dl.cursor_datum()[1]; cout << endl << "The second element of " << dl.cursor_datum() << " is: " << c; cout << endl << "\nUsing << to display key/datum pairs in a Dictionary list: \n"; /* The following line is expected to display the content of the linked list * dl2 -- key/datum pairs. It should display: * 8001 Allen * 8002 Peter * 8003 Sam * 8004 PointyHair */ cout << dl2; cout << endl << "\nUsing [] to display the datum only: \n"; /* The following line is expected to display the content of the linked list * dl2 -- datum. It should display: * Allen * Peter * Sam * PointyHair */ for(int i =0; i < dl2.size(); i++) cout << dl2[i] << endl; cout << endl << "\nUsing [] to display sequence of charaters in a datum: \n"; /* The following line is expected to display the characters in the first node * of the dictionary. It should display: * A * l * l * e * n */ cout << dl2[0][0] << endl; cout << dl2[0][1] << endl; cout << dl2[0][2] << endl; cout << dl2[0][3] << endl; cout << dl2[0][4] << endl; cout << "\n\n***----Finished tests for overloading operators ----------***\n\n"; }