summaryrefslogtreecommitdiffstats
path: root/searchlib/src/tests/attribute/reference_attribute
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@yahoo-inc.com>2017-02-17 13:57:57 +0000
committerTor Egge <Tor.Egge@yahoo-inc.com>2017-02-17 13:57:57 +0000
commitfefc3be06342f0ba2cadb5c28595faa00c94fcb6 (patch)
tree5a8f7075cb10400e0574afd627fd8da96076b575 /searchlib/src/tests/attribute/reference_attribute
parent1e128ce03e253e69e8bf1145e595fcddf88465a0 (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.cpp32
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(); }