void TestIndexTreeMemoryPutPtrDuplicate(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject andrew; CTestIndexTreeObject andrewToo; CTestIndexTreeObject** pcResult; CArrayVoidPtr avp; BOOL bResult; cIndex.Init(); andrew.Init("Andrew"); bResult = cIndex.PutPtr(andrew.mszName, &andrew); AssertTrue(bResult); AssertTrue(cIndex.ValidateSize()); AssertInt(1, cIndex.NumElements()); andrewToo.Init("Andrew"); bResult = cIndex.PutPtr(andrewToo.GetName(), &andrewToo); AssertTrue(bResult); AssertTrue(cIndex.ValidateSize()); AssertInt(1, cIndex.NumElements()); pcResult = (CTestIndexTreeObject**)cIndex.Get("Andrew"); AssertPointer(&andrewToo, *pcResult); avp.Init(); cIndex.FindAll(&avp); AssertInt(1, avp.NumElements()); avp.Kill(); cIndex.Kill(); }
void TestIndexTreeMemoryRemoveNullNode(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject cObject; cIndex.Init(); cObject.Init("Not Important"); cIndex.PutPtr("aaa", &cObject); cIndex.PutPtr("aab", &cObject); AssertInt(2, cIndex.NumElements()); AssertInt(2, cIndex.RecurseSize()); cIndex.Remove("a"); AssertInt(2, cIndex.NumElements()); AssertInt(2, cIndex.RecurseSize()); cIndex.Remove("aaa"); AssertInt(1, cIndex.NumElements()); AssertInt(1, cIndex.RecurseSize()); cIndex.Remove("aaa"); AssertInt(1, cIndex.NumElements()); AssertInt(1, cIndex.RecurseSize()); cIndex.Kill(); }
void TestIndexTreeBlockMemoryHasKey(void) { CIndexTreeBlockMemory cIndex; CTestIndexTreeObject cObject; cIndex.Init(); cObject.Init("Not Important"); cIndex.PutPtr("fabaceous", &cObject); cIndex.PutPtr("fabled", &cObject); cIndex.PutPtr("fabricative", &cObject); cIndex.PutPtr("fabulous", &cObject); cIndex.PutPtr("face-centered", &cObject); cIndex.PutPtr("face-centred", &cObject); cIndex.PutPtr("face-saving", &cObject); cIndex.PutPtr("faceable", &cObject); cIndex.PutPtr("faceless", &cObject); cIndex.PutPtr("facete", &cObject); cIndex.PutPtr("facetious", &cObject); cIndex.PutPtr("facile", &cObject); AssertFalse(cIndex.HasKey(NULL)); AssertFalse(cIndex.HasKey("")); AssertFalse(cIndex.HasKey(" ")); AssertFalse(cIndex.HasKey("fab")); AssertFalse(cIndex.HasKey("facilee")); AssertInt(13, cIndex.GetLargestKeySize()); AssertTrue(cIndex.HasKey("fabricative")); AssertTrue(cIndex.HasKey("fabled")); AssertTrue(cIndex.HasKey("fabulous")); AssertTrue(cIndex.HasKey("face-centered")); AssertTrue(cIndex.HasKey("fabaceous")); AssertTrue(cIndex.HasKey("face-centred")); AssertTrue(cIndex.HasKey("face-saving")); AssertTrue(cIndex.HasKey("faceable")); AssertTrue(cIndex.HasKey("faceless")); AssertTrue(cIndex.HasKey("facete")); AssertTrue(cIndex.HasKey("facetious")); AssertTrue(cIndex.HasKey("facile")); cIndex.Kill(); }
void TestIndexTreeMemoryAdd(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject a; CTestIndexTreeObject aa; CTestIndexTreeObject temp; CArrayVoidPtr avp; BOOL bResult; CIndexTreeNodeMemory* pcNode; CTestIndexTreeObject** ppvTest; CTestIndexTreeObject*** ppvTestA; CTestIndexTreeObject*** ppvTestAA; cIndex.Init(); a.Init("A"); bResult = cIndex.PutPtr(a.GetName(), &a); AssertTrue(bResult); pcNode = cIndex.GetNode("A", 1); ppvTest = (CTestIndexTreeObject**)pcNode->GetObjectPtr(); AssertPointer(&a, *ppvTest); aa.Init("AA"); bResult = cIndex.PutPtr(aa.GetName(), &aa); AssertTrue(bResult); pcNode = cIndex.GetNode("A", 1); ppvTest = (CTestIndexTreeObject**)pcNode->GetObjectPtr(); AssertPointer(&a, *ppvTest); pcNode = cIndex.GetNode("AA", 2); ppvTest = (CTestIndexTreeObject**)pcNode->GetObjectPtr(); AssertPointer(&aa, *ppvTest); avp.Init(); cIndex.FindAll(&avp); AssertInt(2, avp.NumElements()); ppvTestA = (CTestIndexTreeObject***)avp.Get(0); ppvTestAA = (CTestIndexTreeObject***)avp.Get(1); AssertPointer(&a, **ppvTestA); AssertPointer(&aa, **ppvTestAA); AssertString("A", (**ppvTestA)->mszName); AssertString("AA", (**ppvTestAA)->mszName); avp.Kill(); cIndex.Kill(); cIndex.Init(); bResult = cIndex.PutPtr(NULL, &temp); AssertFalse(bResult); bResult = cIndex.PutPtr("", &temp); AssertFalse(bResult); cIndex.Kill(); }
void TestIndexTreeMemoryCountAllocatedNodes(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject cZebra; CTestIndexTreeObject cAardvark; CTestIndexTreeObject cAardvar; CTestIndexTreeObject cAardvarc; CTestIndexTreeObject** pvResult; cIndex.Init(); AssertInt(1, cIndex.CountAllocatedNodes()); cZebra.Init("Zebra"); cAardvark.Init("Aardvark"); cAardvar.Init("Aardvar"); cAardvarc.Init("Aardvarc"); cIndex.PutPtr(cZebra.GetName(), &cZebra); pvResult = (CTestIndexTreeObject**)cIndex.Get("Zebra"); AssertPointer(&cZebra, *pvResult); AssertInt(6, cIndex.CountAllocatedNodes()); cIndex.PutPtr(cAardvark.GetName(), &cAardvark); pvResult = (CTestIndexTreeObject**)cIndex.Get("Aardvark"); AssertPointer(&cAardvark, *pvResult); AssertInt(14, cIndex.CountAllocatedNodes()); cIndex.PutPtr(cAardvar.GetName(), &cAardvar); pvResult = (CTestIndexTreeObject**)cIndex.Get("Aardvar"); AssertPointer(&cAardvar, *pvResult); AssertInt(14, cIndex.CountAllocatedNodes()); cIndex.PutPtr(cAardvarc.GetName(), &cAardvarc); pvResult = (CTestIndexTreeObject**)cIndex.Get("Aardvarc"); AssertPointer(&cAardvarc, *pvResult); AssertInt(15, cIndex.CountAllocatedNodes()); cIndex.Kill(); }
void TestIndexTreeMemoryValidateInternalConsistency(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject cObject; CTestIndexTreeObject cType; CArrayVoidPtr avp; cIndex.Init(); cObject.Init(""); cIndex.PutPtr("tonic", &cObject); cIndex.PutPtr("topia", &cObject); cIndex.PutPtr("topic", &cObject); cIndex.PutPtr("totem", &cObject); cIndex.PutPtr("tower", &cObject); cIndex.PutPtr("tracter", &cObject); cIndex.PutPtr("traction", &cObject); cIndex.PutPtr("trahend", &cObject); cIndex.PutPtr("translucence", &cObject); cIndex.PutPtr("translucency", &cObject); cIndex.PutPtr("transparentness", &cObject); cIndex.PutPtr("tread", &cObject); cIndex.PutPtr("treasurer", &cObject); cIndex.PutPtr("treasurership", &cObject); cIndex.PutPtr("treasury", &cObject); cIndex.PutPtr("trench", &cObject); cIndex.PutPtr("triangularity", &cObject); cIndex.PutPtr("tribe", &cObject); cIndex.PutPtr("triplication", &cObject); cIndex.PutPtr("truncation", &cObject); cIndex.PutPtr("trunk", &cObject); cIndex.PutPtr("tunic", &cObject); cIndex.PutPtr("tunnel", &cObject); cIndex.PutPtr("tutor", &cObject); cIndex.PutPtr("tutorship", &cObject); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tonic")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("topia")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("topic")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("totem")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tower")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tracter")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("traction")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("trahend")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("translucence")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("translucency")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("transparentness")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tread")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("treasurer")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("treasurership")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("treasury")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("trench")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("triangularity")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tribe")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("triplication")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("truncation")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("trunk")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tunic")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tunnel")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tutor")); AssertPointer(&cObject, *(CTestIndexTreeObject**)cIndex.Get("tutorship")); cType.Init("type"); cIndex.PutPtr(cType.GetName(), &cType); AssertPointer(&cType, *(CTestIndexTreeObject**)cIndex.Get("type")); avp.Init(); cIndex.FindAll(&avp); AssertInt(26, avp.NumElements()); avp.Kill(); cIndex.Kill(); }
void TestIndexTreeMemoryGet(void) { CIndexTreeMemory cIndex; CTestIndexTreeObject andrew; CTestIndexTreeObject** pcResult; CArrayVoidPtr avp; CTestIndexTreeObject batman; CTestIndexTreeObject batmam; CTestIndexTreeObject andre; CIndexTreeNodeMemory* pcNodeBatman; CIndexTreeNodeMemory* pcNodeBatmam; char* szBatmam; cIndex.Init(); andrew.Init("Andrew"); cIndex.PutPtr(andrew.GetName(), &andrew); pcResult = (CTestIndexTreeObject**)cIndex.Get("Andrew"); AssertPointer(*pcResult, &andrew); avp.Init(); cIndex.FindAll(&avp); AssertInt(1, avp.NumElements()); avp.Kill(); batman.Init("Batman"); cIndex.PutPtr(batman.GetName(), &batman); pcNodeBatman = cIndex.GetNode("Batman", 6); AssertInt(0, pcNodeBatman->NumIndexes()); pcResult = (CTestIndexTreeObject**)cIndex.Get("Batman"); AssertPointer(*pcResult, &batman); avp.Init(); cIndex.FindAll(&avp); AssertInt(2, avp.NumElements()); avp.Kill(); szBatmam = "Batmam"; batmam.Init(szBatmam); cIndex.PutPtr(szBatmam, &batmam); pcNodeBatman = cIndex.GetNode("Batman", 6); pcNodeBatmam = cIndex.GetNode(szBatmam, 6); pcResult = (CTestIndexTreeObject**)cIndex.Get(szBatmam); AssertPointer(&batmam, *pcResult); avp.Init(); cIndex.FindAll(&avp); AssertInt(3, avp.NumElements()); avp.Kill(); andre.Init("Andre"); cIndex.PutPtr(andre.GetName(), &andre); pcResult = (CTestIndexTreeObject**)cIndex.Get("Andre"); AssertPointer(&andre, *pcResult); avp.Init(); cIndex.FindAll(&avp); AssertInt(4, avp.NumElements()); avp.Kill(); AssertNull(cIndex.Get(NULL)); AssertNull(cIndex.Get("")); AssertNull(cIndex.Get("Batma")); AssertNull(cIndex.Get("Batmano")); AssertNull(cIndex.Get("Batmao")); cIndex.Kill(); }