Files
bullet3/Extras/FCollada/FColladaTest/FCTestUtils.cpp
2006-05-25 19:18:29 +00:00

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);
}
}