duplicates handling for forceRecord and changeRecord methods, tests and docs
This commit is contained in:
parent
f00f017b16
commit
2d40692560
4 changed files with 263 additions and 43 deletions
|
@ -54,7 +54,7 @@ protected:
|
|||
|
||||
LMDBAL::Base* DuplicatesTest::db = nullptr;
|
||||
|
||||
TEST_F(DuplicatesTest, FlagsUnique) {
|
||||
TEST_F(DuplicatesTest, Flags) {
|
||||
uint32_t tu1Flags = getTU1Flags();
|
||||
uint32_t tu2Flags = getTU2Flags();
|
||||
uint32_t tu3Flags = getTU3Flags();
|
||||
|
@ -87,7 +87,7 @@ TEST_F(DuplicatesTest, FlagsUnique) {
|
|||
EXPECT_TRUE(tu5Flags & MDB_INTEGERDUP);
|
||||
}
|
||||
|
||||
TEST_F(DuplicatesTest, AddingPairUnique) {
|
||||
TEST_F(DuplicatesTest, Adding) {
|
||||
tu1->addRecord(1, 1);
|
||||
tu1->addRecord(2, 2);
|
||||
tu1->addRecord(2, 1);
|
||||
|
@ -165,3 +165,164 @@ TEST_F(DuplicatesTest, AddingPairUnique) {
|
|||
EXPECT_EQ(tu5->getRecord(-84.7), 45656753);
|
||||
EXPECT_EQ(tu5->getRecord(52.87), intMax);
|
||||
}
|
||||
|
||||
TEST_F(DuplicatesTest, Forcing) {
|
||||
LMDBAL::SizeType tu1Size = tu1->count();
|
||||
tu1->addRecord(-56, 71);
|
||||
tu1->addRecord(-56, 274);
|
||||
tu1->addRecord(-56, 732);
|
||||
EXPECT_EQ(tu1->count(), tu1Size += 3);
|
||||
EXPECT_TRUE(tu1->forceRecord(-56, 322));
|
||||
EXPECT_EQ(tu1->count(), tu1Size += 1);
|
||||
EXPECT_EQ(tu1->getRecord(-56), 274); //like yeah, it's really counterintuitive, since it's compared byte by byte
|
||||
EXPECT_TRUE(tu1->forceRecord(-56, 14));
|
||||
EXPECT_EQ(tu1->count(), tu1Size += 1);
|
||||
EXPECT_EQ(tu1->getRecord(-56), 14);
|
||||
EXPECT_FALSE(tu1->forceRecord(-56, 274));
|
||||
EXPECT_EQ(tu1->count(), tu1Size);
|
||||
|
||||
LMDBAL::SizeType tu2Size = tu2->count();
|
||||
tu2->addRecord("printable", -2);
|
||||
tu2->addRecord("printable", 4);
|
||||
EXPECT_EQ(tu2->count(), tu2Size += 2);
|
||||
EXPECT_TRUE(tu2->forceRecord("printable", 18));
|
||||
EXPECT_EQ(tu2->count(), tu2Size += 1);
|
||||
EXPECT_EQ(tu2->getRecord("printable"), 4);
|
||||
EXPECT_TRUE(tu2->forceRecord("printable", 3));
|
||||
EXPECT_EQ(tu2->count(), tu2Size += 1);
|
||||
EXPECT_EQ(tu2->getRecord("printable"), 3);
|
||||
EXPECT_FALSE(tu2->forceRecord("printable", 4));
|
||||
EXPECT_EQ(tu2->count(), tu2Size);
|
||||
|
||||
LMDBAL::SizeType tu3Size = tu3->count();
|
||||
tu3->addRecord(17.3, 93.21);
|
||||
tu3->addRecord(17.3, 6.6);
|
||||
tu3->addRecord(17.3, 105.1);
|
||||
EXPECT_EQ(tu3->count(), tu3Size += 3);
|
||||
EXPECT_TRUE(tu3->forceRecord(17.3, 74.9));
|
||||
EXPECT_EQ(tu3->count(), tu3Size += 1);
|
||||
EXPECT_EQ(tu3->getRecord(17.3), 105.1f); //here too, really one should not use this function with duplicates,
|
||||
EXPECT_TRUE(tu3->forceRecord(17.3, 5.1)); //unless he wishes for kinda randomish result
|
||||
EXPECT_EQ(tu3->count(), tu3Size += 1);
|
||||
EXPECT_EQ(tu3->getRecord(17.3), 5.1f);
|
||||
EXPECT_FALSE(tu3->forceRecord(17.3, 93.21));
|
||||
EXPECT_EQ(tu3->count(), tu3Size);
|
||||
|
||||
LMDBAL::SizeType tu4Size = tu4->count();
|
||||
tu4->addRecord(84, -359.109);
|
||||
tu4->addRecord(84, 2879.654);
|
||||
EXPECT_EQ(tu4->count(), tu4Size += 2);
|
||||
EXPECT_TRUE(tu4->forceRecord(84, 72.9));
|
||||
EXPECT_EQ(tu4->count(), tu4Size += 1);
|
||||
EXPECT_EQ(tu4->getRecord(84), 2879.654);
|
||||
EXPECT_TRUE(tu4->forceRecord(84, 2679.5));
|
||||
EXPECT_EQ(tu4->count(), tu4Size += 1);
|
||||
EXPECT_EQ(tu4->getRecord(84), 2679.5);
|
||||
EXPECT_FALSE(tu4->forceRecord(84, -359.109));
|
||||
EXPECT_EQ(tu4->count(), tu4Size);
|
||||
|
||||
LMDBAL::SizeType tu5Size = tu5->count();
|
||||
tu5->addRecord(0.45, -85645);
|
||||
tu5->addRecord(0.45, 10573);
|
||||
tu5->addRecord(0.45, 573);
|
||||
tu5->addRecord(0.45, 73285);
|
||||
EXPECT_EQ(tu5->count(), tu5Size += 4);
|
||||
EXPECT_TRUE(tu5->forceRecord(0.45, -473));
|
||||
EXPECT_EQ(tu5->count(), tu5Size += 1);
|
||||
EXPECT_EQ(tu5->getRecord(0.45), 573);
|
||||
EXPECT_TRUE(tu5->forceRecord(0.45, 394));
|
||||
EXPECT_EQ(tu5->count(), tu5Size += 1);
|
||||
EXPECT_EQ(tu5->getRecord(0.45), 394);
|
||||
EXPECT_FALSE(tu5->forceRecord(0.45, 10573));
|
||||
EXPECT_EQ(tu5->count(), tu5Size);
|
||||
}
|
||||
|
||||
TEST_F(DuplicatesTest, Changing) {
|
||||
LMDBAL::SizeType tu1Size = tu1->count();
|
||||
EXPECT_THROW(tu1->changeRecord(-31, 53), LMDBAL::NotFound);
|
||||
EXPECT_EQ(tu1->count(), tu1Size);
|
||||
tu1->addRecord(-31, 53);
|
||||
EXPECT_EQ(tu1->count(), tu1Size += 1);
|
||||
EXPECT_EQ(tu1->getRecord(-31), 53);
|
||||
tu1->changeRecord(-31, 53); //should just do nothing usefull, but work normally
|
||||
EXPECT_EQ(tu1->getRecord(-31), 53);
|
||||
tu1->changeRecord(-31, 19);
|
||||
EXPECT_EQ(tu1->count(), tu1Size);
|
||||
EXPECT_EQ(tu1->getRecord(-31), 19);
|
||||
tu1->addRecord(-31, 60);
|
||||
EXPECT_EQ(tu1->count(), tu1Size += 1);
|
||||
EXPECT_EQ(tu1->getRecord(-31), 19);
|
||||
tu1->changeRecord(-31, 16);
|
||||
EXPECT_EQ(tu1->count(), tu1Size);
|
||||
EXPECT_EQ(tu1->getRecord(-31), 16);
|
||||
tu1->changeRecord(-31, 203);
|
||||
EXPECT_EQ(tu1->count(), tu1Size);
|
||||
EXPECT_EQ(tu1->getRecord(-31), 60);
|
||||
EXPECT_THROW(tu1->changeRecord(-31, 203), LMDBAL::Exist);
|
||||
|
||||
LMDBAL::SizeType tu2Size = tu2->count();
|
||||
EXPECT_THROW(tu2->changeRecord("jeremy spins", -5), LMDBAL::NotFound);
|
||||
EXPECT_EQ(tu2->count(), tu2Size);
|
||||
tu2->addRecord("jeremy spins", -5);
|
||||
EXPECT_EQ(tu2->count(), tu2Size += 1);
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), -5);
|
||||
tu2->changeRecord("jeremy spins", -5); //should just do nothing usefull, but work normally
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), -5);
|
||||
tu2->changeRecord("jeremy spins", 11);
|
||||
EXPECT_EQ(tu2->count(), tu2Size);
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), 11);
|
||||
tu2->addRecord("jeremy spins", 24);
|
||||
EXPECT_EQ(tu2->count(), tu2Size += 1);
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), 11);
|
||||
tu2->changeRecord("jeremy spins", 4);
|
||||
EXPECT_EQ(tu2->count(), tu2Size);
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), 4);
|
||||
tu2->changeRecord("jeremy spins", -7);
|
||||
EXPECT_EQ(tu2->count(), tu2Size);
|
||||
EXPECT_EQ(tu2->getRecord("jeremy spins"), 24); //cuz it's compared as usigned down there
|
||||
EXPECT_THROW(tu2->changeRecord("jeremy spins", -7), LMDBAL::Exist);
|
||||
|
||||
LMDBAL::SizeType tu3Size = tu3->count();
|
||||
EXPECT_THROW(tu3->changeRecord(26.7, 68.22), LMDBAL::NotFound);
|
||||
EXPECT_EQ(tu3->count(), tu3Size);
|
||||
tu3->addRecord(26.7, 68.22);
|
||||
EXPECT_EQ(tu3->count(), tu3Size += 1);
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 68.22f);
|
||||
tu3->changeRecord(26.7, 68.22); //should just do nothing usefull, but work normally
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 68.22f);
|
||||
tu3->changeRecord(26.7, 23.18);
|
||||
EXPECT_EQ(tu3->count(), tu3Size);
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 23.18f);
|
||||
tu3->addRecord(26.7, 22.16);
|
||||
EXPECT_EQ(tu3->count(), tu3Size += 1);
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 23.18f);
|
||||
tu3->changeRecord(26.7, 21.7);
|
||||
EXPECT_EQ(tu3->count(), tu3Size);
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 21.7f);
|
||||
tu3->changeRecord(26.7, 54.33);
|
||||
EXPECT_EQ(tu3->count(), tu3Size);
|
||||
EXPECT_EQ(tu3->getRecord(26.7), 22.16f);
|
||||
EXPECT_THROW(tu3->changeRecord(26.7, 54.33), LMDBAL::Exist);
|
||||
|
||||
LMDBAL::SizeType tu4Size = tu4->count();
|
||||
EXPECT_THROW(tu4->changeRecord(852, 6795.349), LMDBAL::NotFound);
|
||||
EXPECT_EQ(tu4->count(), tu4Size);
|
||||
tu4->addRecord(852, 6795.349);
|
||||
EXPECT_EQ(tu4->count(), tu4Size += 1);
|
||||
EXPECT_EQ(tu4->getRecord(852), 6795.349);
|
||||
tu4->changeRecord(852, 6795.349); //should just do nothing usefull, but work normally
|
||||
EXPECT_EQ(tu4->getRecord(852), 6795.349);
|
||||
tu4->changeRecord(852, 13.54);
|
||||
EXPECT_EQ(tu4->count(), tu4Size);
|
||||
EXPECT_EQ(tu4->getRecord(852), 13.54);
|
||||
tu4->addRecord(852, 213.85);
|
||||
EXPECT_EQ(tu4->count(), tu4Size += 1);
|
||||
EXPECT_EQ(tu4->getRecord(852), 13.54);
|
||||
tu4->changeRecord(852, 236.21);
|
||||
EXPECT_EQ(tu4->count(), tu4Size);
|
||||
EXPECT_EQ(tu4->getRecord(852), 236.21);
|
||||
tu4->changeRecord(852, 46324.1135);
|
||||
EXPECT_EQ(tu4->count(), tu4Size);
|
||||
EXPECT_EQ(tu4->getRecord(852), 213.85);
|
||||
EXPECT_THROW(tu4->changeRecord(852, 46324.1135), LMDBAL::Exist);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue