Items in shared memory

This commit is contained in:
KimLS
2013-02-20 22:36:30 -08:00
parent 0115b18e67
commit 3e9c2a06a3
11 changed files with 496 additions and 332 deletions
+86
View File
@@ -38,6 +38,10 @@ public:
TEST_ADD(FixedMemoryHashTest::OverwriteRetrieveTest);
TEST_ADD(FixedMemoryHashTest::InsertAgainTest);
TEST_ADD(FixedMemoryHashTest::RetrieveAgainTest);
TEST_ADD(FixedMemoryHashTest::InsertBeginTest);
TEST_ADD(FixedMemoryHashTest::RetrieveBeginTest);
TEST_ADD(FixedMemoryHashTest::InsertEndTest);
TEST_ADD(FixedMemoryHashTest::RetrieveEndTest);
}
~FixedMemoryHashTest() {
delete[] data_;
@@ -142,6 +146,88 @@ public:
TEST_ASSERT(strcmp(item.Name, "Steel Sword") == 0);
TEST_ASSERT(item.ID == 1001);
}
void InsertBeginTest() {
EQEmu::FixedMemoryHashSet<Item_Struct> hash(data_, size_);
Item_Struct item;
memset(&item, 0, sizeof(item));
strcpy(item.Name, "Bronze Sword");
item.ID = 0;
hash.insert(0, item);
TEST_ASSERT(hash.exists(1000));
TEST_ASSERT(hash.exists(1001));
TEST_ASSERT(hash.exists(0));
TEST_ASSERT(hash.size() == 3);
TEST_ASSERT(hash.max_size() == 72000);
TEST_ASSERT(!hash.empty());
}
void RetrieveBeginTest() {
EQEmu::FixedMemoryHashSet<Item_Struct> hash(data_, size_);
TEST_ASSERT(hash.exists(1000));
TEST_ASSERT(hash.exists(1001));
TEST_ASSERT(hash.exists(0));
TEST_ASSERT(hash.size() == 3);
TEST_ASSERT(hash.max_size() == 72000);
TEST_ASSERT(!hash.empty());
Item_Struct item = hash[1000];
TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0);
TEST_ASSERT(item.ID == 1000);
item = hash[1001];
TEST_ASSERT(strcmp(item.Name, "Steel Sword") == 0);
TEST_ASSERT(item.ID == 1001);
item = hash[0];
TEST_ASSERT(strcmp(item.Name, "Bronze Sword") == 0);
TEST_ASSERT(item.ID == 0);
}
void InsertEndTest() {
EQEmu::FixedMemoryHashSet<Item_Struct> hash(data_, size_);
Item_Struct item;
memset(&item, 0, sizeof(item));
strcpy(item.Name, "Jade Sword");
item.ID = 190000;
hash.insert(190000, item);
TEST_ASSERT(hash.exists(1000));
TEST_ASSERT(hash.exists(1001));
TEST_ASSERT(hash.exists(0));
TEST_ASSERT(hash.exists(190000));
TEST_ASSERT(hash.size() == 4);
TEST_ASSERT(hash.max_size() == 72000);
TEST_ASSERT(!hash.empty());
}
void RetrieveEndTest() {
EQEmu::FixedMemoryHashSet<Item_Struct> hash(data_, size_);
TEST_ASSERT(hash.exists(1000));
TEST_ASSERT(hash.exists(1001));
TEST_ASSERT(hash.exists(0));
TEST_ASSERT(hash.exists(190000));
TEST_ASSERT(hash.size() == 4);
TEST_ASSERT(hash.max_size() == 72000);
TEST_ASSERT(!hash.empty());
Item_Struct item = hash[1000];
TEST_ASSERT(strcmp(item.Name, "Iron Sword") == 0);
TEST_ASSERT(item.ID == 1000);
item = hash[1001];
TEST_ASSERT(strcmp(item.Name, "Steel Sword") == 0);
TEST_ASSERT(item.ID == 1001);
item = hash[0];
TEST_ASSERT(strcmp(item.Name, "Bronze Sword") == 0);
TEST_ASSERT(item.ID == 0);
item = hash[190000];
TEST_ASSERT(strcmp(item.Name, "Jade Sword") == 0);
TEST_ASSERT(item.ID == 190000);
}
private:
uint8 *data_;
size_t size_;