//===========================================================================// // File: namelist.tst // // Title: Definition of NameList TestClass methods. // // Purpose: Maintains an unsorted list of strings with (void *) to // // anything the client needs to associate with the string. // //---------------------------------------------------------------------------// // Copyright (C) Microsoft Corporation. All rights reserved. // //===========================================================================// #include "StuffHeaders.hpp" #include "NameList.hpp" #define TEST_COUNT 50 //############################################################################# //############## TestHost ############################################### //############################################################################# class TestHost #if defined(_ARMOR) : public Stuff::Signature #endif { public: //-------------------------------------------------------------------- // ObjectNameList is designed to bond with another class to provide // dymanic naming of the objects represented by that class. TestHost // provides a means of testing the functionality of ObjectNameList. //-------------------------------------------------------------------- const char *name; TestHost *next; static ObjectNameList names; TestHost(const char *a_name); ~TestHost(); bool TestInstance() const; }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // ObjectNameList TestHost::names; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // TestHost::TestHost(const char *a_name) { Check_Pointer(this); Check_Pointer(a_name); name = names.AddEntry(a_name, this); next = NULL; } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // TestHost::~TestHost() { Check_Object(this); names.DeleteEntry(name); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // bool TestHost::TestInstance() const { return true; } //############################################################################# //############## ObjectNameList::TestClass ############################## //############################################################################# bool ObjectNameList::TestClass() { SPEW((GROUP_STUFF_TEST, "Starting ObjectNameList test...")); SPEW((GROUP_STUFF_TEST, "ObjectNameList test is stubbed out...")); #if 0 TestHost *host, *save_host; ObjectNameList::Entry *next_entry, *entry, *save_entry = NULL; NameList sub_list; int freq, count, i; div_t mod; char name[20], save_name[20]; //---------------------- // initialize variables //---------------------- save_host = NULL; freq = TEST_COUNT / 10; count = 0; //-------------------------------- // add objects to test and delete // a few in the process //-------------------------------- Test_Assumption( TestHost::names.IsEmpty() ); for (i=0; iGetObject()); Check_Pointer(host->name); Check_Pointer(entry->GetName()); Test_Assumption( host->name == entry->GetName() ); if ((--i) == 0) { save_entry = entry; } entry = entry->GetNextEntry(); } //-------------------------------------- // delete middle, first and last object //-------------------------------------- entry = save_entry; if (entry) { Check_Pointer(entry); // special case (entry is not constructed) host = Cast_Pointer(TestHost *, entry->GetObject()); Unregister_Object(host); delete host; count--; } entry = TestHost::names.GetFirstEntry(); if (entry) { Check_Pointer(entry); // special case (entry is not constructed) host = Cast_Pointer(TestHost *, entry->GetObject()); Unregister_Object(host); delete host; count--; } entry = TestHost::names.GetLastEntry(); if (entry) { Check_Pointer(entry); // special case (entry is not constructed) host = Cast_Pointer(TestHost *, entry->GetObject()); Unregister_Object(host); delete host; count--; } //------------------------ // add a few more objects //------------------------ for (i=TEST_COUNT; iGetObject()); Check_Pointer(host->name); Check_Pointer(entry->GetName()); Test_Assumption( host->name == entry->GetName() ); next_entry = entry->GetNextEntry(); if (!next_entry) { Test_Assumption( entry == TestHost::names.GetLastEntry() ); Test_Assumption( entry == TestHost::names.GetFirstEntry() ); } Unregister_Object(host); delete host; count--; entry = next_entry; } Test_Assumption( count == 0 ); #endif // Tell(" ObjectNameList::TestClass() is stubbed out!\n"); return true; } //############################################################################# //############## NameList::TestClass #################################### //############################################################################# bool NameList::TestClass() { SPEW((GROUP_STUFF_TEST, "Starting NameList test...")); SPEW((GROUP_STUFF_TEST, " NameList::TestClass() is stubbed out!")); return false; } //############################################################################# //############## AlphaNameList::TestClass ############################### //############################################################################# bool AlphaNameList::TestClass() { SPEW((GROUP_STUFF_TEST, "Starting AlphaNameList test...")); SPEW((GROUP_STUFF_TEST, " AlphaNameList::TestClass() is stubbed out!\n")); return false; } //############################################################################# //#############################################################################