diff options
author | Tor Egge <Tor.Egge@online.no> | 2022-08-31 12:54:39 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@online.no> | 2022-08-31 12:54:39 +0200 |
commit | 5dfcbf042f113a468139585fcdb2a11021d616f7 (patch) | |
tree | 5696dc7f707e5944970a9ee2745309f1a2512a53 /searchsummary | |
parent | a9459aeb4ad638ba05a90d3f8e8de24c3df47f9c (diff) |
Test failure to get backing document and failure to find summary class when
generating summary.
Diffstat (limited to 'searchsummary')
-rw-r--r-- | searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp | 37 |
1 files changed, 36 insertions, 1 deletions
diff --git a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp index 88c6cd974b9..d12223d5cf4 100644 --- a/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp +++ b/searchsummary/src/tests/docsummary/slime_summary/slime_summary_test.cpp @@ -47,6 +47,8 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback { StructDataType int_pair_type; DocumentType doc_type; GetDocsumsState state; + bool fail_get_mapped_docsum; + bool empty_get_mapped_docsum; DocsumFixture(); ~DocsumFixture() override; void getDocsum(Slime &slime) { @@ -60,6 +62,12 @@ struct DocsumFixture : IDocsumStore, GetDocsumsStateCallback { uint32_t getNumDocs() const override { return 2; } std::unique_ptr<const IDocsumStoreDocument> getMappedDocsum(uint32_t docid) override { EXPECT_EQUAL(1u, docid); + if (fail_get_mapped_docsum) { + return {}; + } + if (empty_get_mapped_docsum) { + return std::make_unique<DocsumStoreDocument>(std::unique_ptr<Document>()); + } auto doc = std::make_unique<Document>(doc_type, DocumentId("id:test:test::0")); doc->setValue("int_field", IntFieldValue(4)); doc->setValue("short_field", ShortFieldValue(2)); @@ -89,7 +97,9 @@ DocsumFixture::DocsumFixture() : writer(), int_pair_type("int_pair"), doc_type("test"), - state(*this) + state(*this), + fail_get_mapped_docsum(false), + empty_get_mapped_docsum(false) { auto config = std::make_unique<ResultConfig>(); ResultClass *cfg = config->AddResultClass("default", 0); @@ -142,4 +152,29 @@ TEST_FF("require that docsum can be written as slime", DocsumFixture(), Slime()) EXPECT_EQUAL(f2.get()["int_pair_field"]["bar"].asLong(), 2u); } +TEST_FF("require that unknown summary class gives empty slime", DocsumFixture(), Slime()) +{ + f1.state._args.setResultClassName("unknown"); + f1.getDocsum(f2); + EXPECT_TRUE(f2.get().valid()); + EXPECT_EQUAL(vespalib::slime::NIX::ID, f2.get().type().getId()); +} + +TEST_FF("require that failure to retrieve docsum store document gives empty slime", DocsumFixture(), Slime()) +{ + f1.fail_get_mapped_docsum = true; + f1.getDocsum(f2); + EXPECT_TRUE(f2.get().valid()); + EXPECT_EQUAL(vespalib::slime::NIX::ID, f2.get().type().getId()); +} + +TEST_FF("require that empty docsum store document gives empty object", DocsumFixture(), Slime()) +{ + f1.empty_get_mapped_docsum = true; + f1.getDocsum(f2); + EXPECT_TRUE(f2.get().valid()); + EXPECT_EQUAL(vespalib::slime::OBJECT::ID, f2.get().type().getId()); + EXPECT_EQUAL(0u, f2.get().fields()); +} + TEST_MAIN() { TEST_RUN_ALL(); } |