71 lines
1.9 KiB
C++
71 lines
1.9 KiB
C++
/*
|
|
Copyright (C) 2005-2006 Feeling Software Inc.
|
|
Available only to licensees.
|
|
Distribution of this file or its content is strictly prohibited.
|
|
*/
|
|
|
|
#include "StdAfx.h"
|
|
#include "FUtils/FUUniqueStringMap.h"
|
|
|
|
void TestUniqueStringMap()
|
|
{
|
|
#define VERIFY_UNIQUE(c) { for (StringList::iterator itN = uniqueNames.begin(); itN != uniqueNames.end(); ++itN) { FailIf((*itN) == (c)); } }
|
|
StringList uniqueNames;
|
|
|
|
FUSUniqueStringMap names;
|
|
FailIf(names.Exists("Test"));
|
|
FailIf(names.Exists("Test0"));
|
|
FailIf(names.Exists("Test1"));
|
|
FailIf(names.Exists("Test2"));
|
|
|
|
// Add a first name: should always be unique
|
|
string name1 = "Test";
|
|
names.AddUniqueString(name1);
|
|
PassIf(names.Exists("Test"));
|
|
PassIf(name1 == "Test");
|
|
uniqueNames.push_back(name1);
|
|
|
|
// Add a second name that should also be unique
|
|
string name2 = "Glad";
|
|
names.AddUniqueString(name2);
|
|
PassIf(names.Exists("Glad"));
|
|
PassIf(name2 == "Glad");
|
|
uniqueNames.push_back(name2);
|
|
|
|
// Add the first name a couple more times
|
|
string name3 = name1;
|
|
names.AddUniqueString(name3);
|
|
PassIf(names.Exists(name3));
|
|
VERIFY_UNIQUE(name3);
|
|
uniqueNames.push_back(name3);
|
|
|
|
name3 = name1;
|
|
names.AddUniqueString(name3);
|
|
PassIf(names.Exists(name3));
|
|
VERIFY_UNIQUE(name3);
|
|
uniqueNames.push_back(name3);
|
|
|
|
// Add the second name a couple more times
|
|
name3 = name2;
|
|
names.AddUniqueString(name3);
|
|
PassIf(names.Exists(name3));
|
|
VERIFY_UNIQUE(name3);
|
|
uniqueNames.push_back(name3);
|
|
|
|
name3 = name2;
|
|
names.AddUniqueString(name3);
|
|
PassIf(names.Exists(name3));
|
|
VERIFY_UNIQUE(name3);
|
|
uniqueNames.push_back(name3);
|
|
|
|
// There should now be 6 unique names, so pick some randomly and verify that we're always getting more unique names.
|
|
for (int32 i = 0; i < 5; ++i)
|
|
{
|
|
int32 index = rand() % ((int32)uniqueNames.size());
|
|
name3 = uniqueNames[index];
|
|
names.AddUniqueString(name3);
|
|
PassIf(names.Exists(name3));
|
|
VERIFY_UNIQUE(name3);
|
|
uniqueNames.push_back(name3);
|
|
}
|
|
} |