diff options
author | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-02-17 13:57:57 +0000 |
---|---|---|
committer | Tor Egge <Tor.Egge@yahoo-inc.com> | 2017-02-17 13:57:57 +0000 |
commit | fefc3be06342f0ba2cadb5c28595faa00c94fcb6 (patch) | |
tree | 5a8f7075cb10400e0574afd627fd8da96076b575 /searchlib/src/tests/attribute/reference_attribute | |
parent | 1e128ce03e253e69e8bf1145e595fcddf88465a0 (diff) |
Add notifyGidToLidChange() method to reference attribute, to handle
information about changed gid to lid mapping.
Diffstat (limited to 'searchlib/src/tests/attribute/reference_attribute')
-rw-r--r-- | searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp index df967c6b171..61ac12e634f 100644 --- a/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp +++ b/searchlib/src/tests/attribute/reference_attribute/reference_attribute_test.cpp @@ -112,6 +112,10 @@ struct Fixture } } + const ReferenceAttribute::Reference *getRef(uint32_t doc) { + return _attr->getReference(doc); + } + void set(uint32_t doc, const GlobalId &gid) { _attr->update(doc, gid); } @@ -133,6 +137,12 @@ struct Fixture EXPECT_EQUAL(toGid(str), *gid); } + void assertRefLid(uint32_t expLid, uint32_t doc) { + auto ref = getRef(doc); + EXPECT_TRUE(ref != nullptr); + EXPECT_EQUAL(expLid, ref->lid()); + } + void save() { attr().save(); } @@ -165,6 +175,10 @@ struct Fixture uint32_t referencedDoc = _attr->getReferencedLid(doc); EXPECT_EQUAL(expReferencedDoc, referencedDoc); } + + void notifyGidToLidChange(const GlobalId &gid, uint32_t referencedDoc) { + _attr->notifyGidToLidChange(gid, referencedDoc); + } }; TEST_F("require that we can instantiate reference attribute", Fixture) @@ -277,4 +291,22 @@ TEST_F("require that we can use gid mapper", Fixture) TEST_DO(f.assertReferencedLid(5, 0)); } +TEST_F("require that notifyGidToLidChange works", Fixture) +{ + f.ensureDocIdLimit(4); + f.set(1, toGid(doc1)); + f.set(2, toGid(doc2)); + f.set(3, toGid(doc1)); + f.commit(); + TEST_DO(f.assertRefLid(0, 1)); + TEST_DO(f.assertRefLid(0, 2)); + TEST_DO(f.assertRefLid(0, 3)); + f.notifyGidToLidChange(toGid(doc1), 10); + f.notifyGidToLidChange(toGid(doc2), 20); + f.notifyGidToLidChange(toGid(doc3), 30); + TEST_DO(f.assertRefLid(10, 1)); + TEST_DO(f.assertRefLid(20, 2)); + TEST_DO(f.assertRefLid(10, 3)); +} + TEST_MAIN() { TEST_RUN_ALL(); } |