diff options
author | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
---|---|---|
committer | Jon Bratseth <bratseth@yahoo-inc.com> | 2016-06-15 23:09:44 +0200 |
commit | 72231250ed81e10d66bfe70701e64fa5fe50f712 (patch) | |
tree | 2728bba1131a6f6e5bdf95afec7d7ff9358dac50 /document/src/tests/fieldvalue |
Publish
Diffstat (limited to 'document/src/tests/fieldvalue')
-rw-r--r-- | document/src/tests/fieldvalue/.gitignore | 7 | ||||
-rw-r--r-- | document/src/tests/fieldvalue/CMakeLists.txt | 28 | ||||
-rw-r--r-- | document/src/tests/fieldvalue/document_test.cpp | 31 | ||||
-rw-r--r-- | document/src/tests/fieldvalue/fieldvalue_test.cpp | 41 | ||||
-rw-r--r-- | document/src/tests/fieldvalue/predicatefieldvalue_test.cpp | 70 |
5 files changed, 177 insertions, 0 deletions
diff --git a/document/src/tests/fieldvalue/.gitignore b/document/src/tests/fieldvalue/.gitignore new file mode 100644 index 00000000000..6b57b8c8d17 --- /dev/null +++ b/document/src/tests/fieldvalue/.gitignore @@ -0,0 +1,7 @@ +*.So +*_test +.depend +Makefile +document_document_test_app +document_fieldvalue_test_app +document_predicatefieldvalue_test_app diff --git a/document/src/tests/fieldvalue/CMakeLists.txt b/document/src/tests/fieldvalue/CMakeLists.txt new file mode 100644 index 00000000000..7b5fc637e4f --- /dev/null +++ b/document/src/tests/fieldvalue/CMakeLists.txt @@ -0,0 +1,28 @@ +# Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +vespa_add_executable(document_document_test_app + SOURCES + document_test.cpp + DEPENDS + document + AFTER + document_documentconfig +) +vespa_add_test(NAME document_document_test_app COMMAND document_document_test_app) +vespa_add_executable(document_fieldvalue_test_app + SOURCES + fieldvalue_test.cpp + DEPENDS + document + AFTER + document_documentconfig +) +vespa_add_test(NAME document_fieldvalue_test_app COMMAND document_fieldvalue_test_app) +vespa_add_executable(document_predicatefieldvalue_test_app + SOURCES + predicatefieldvalue_test.cpp + DEPENDS + document + AFTER + document_documentconfig +) +vespa_add_test(NAME document_predicatefieldvalue_test_app COMMAND document_predicatefieldvalue_test_app) diff --git a/document/src/tests/fieldvalue/document_test.cpp b/document/src/tests/fieldvalue/document_test.cpp new file mode 100644 index 00000000000..51216c6d77a --- /dev/null +++ b/document/src/tests/fieldvalue/document_test.cpp @@ -0,0 +1,31 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Unit tests for document. + +#include <vespa/log/log.h> +LOG_SETUP("document_test"); +#include <vespa/fastos/fastos.h> + +#include <vespa/document/base/documentid.h> +#include <vespa/document/base/testdocrepo.h> +#include <vespa/document/fieldvalue/document.h> +#include <vespa/vespalib/testkit/testapp.h> + +using namespace document; + +namespace { + +TEST("require that document with id schema 'id' checks type") { + TestDocRepo repo; + const DataType *type = repo.getDocumentType("testdoctype1"); + ASSERT_TRUE(type); + + Document(*type, DocumentId("id:ns:testdoctype1::")); // Should not throw + + EXPECT_EXCEPTION(Document(*type, DocumentId("id:ns:type::")), + vespalib::IllegalArgumentException, + "testdoctype1 that don't match the id (type type)"); +} + +} // namespace + +TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/document/src/tests/fieldvalue/fieldvalue_test.cpp b/document/src/tests/fieldvalue/fieldvalue_test.cpp new file mode 100644 index 00000000000..7fecb42417e --- /dev/null +++ b/document/src/tests/fieldvalue/fieldvalue_test.cpp @@ -0,0 +1,41 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Unit tests for fieldvalue. + +#include <vespa/log/log.h> +LOG_SETUP("fieldvalue_test"); +#include <vespa/fastos/fastos.h> + +#include <vespa/document/fieldvalue/stringfieldvalue.h> +#include <vespa/document/fieldvalue/longfieldvalue.h> +#include <vespa/document/fieldvalue/intfieldvalue.h> + +#include <vespa/vespalib/testkit/testapp.h> + +using namespace document; + +namespace { + +TEST("require that StringFieldValue can be assigned primitives") { + StringFieldValue val; + val = "foo"; + EXPECT_EQUAL("foo", val.getValue()); + val = 1; + EXPECT_EQUAL("1", val.getValue()); + val = static_cast<int64_t>(2); + EXPECT_EQUAL("2", val.getValue()); + val = 3.0f; + EXPECT_EQUAL("3", val.getValue()); + val = 4.0; + EXPECT_EQUAL("4", val.getValue()); +} + +TEST("require that FieldValues does not change their storage size.") { + EXPECT_EQUAL(8u, sizeof(FieldValue)); + EXPECT_EQUAL(16u, sizeof(IntFieldValue)); + EXPECT_EQUAL(24u, sizeof(LongFieldValue)); + EXPECT_EQUAL(104u, sizeof(StringFieldValue)); +} + +} // namespace + +TEST_MAIN() { TEST_RUN_ALL(); } diff --git a/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp b/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp new file mode 100644 index 00000000000..94b0f406696 --- /dev/null +++ b/document/src/tests/fieldvalue/predicatefieldvalue_test.cpp @@ -0,0 +1,70 @@ +// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. +// Unit tests for predicatefieldvalue. + +#include <vespa/log/log.h> +LOG_SETUP("predicatefieldvalue_test"); +#include <vespa/fastos/fastos.h> + +#include <vespa/document/predicate/predicate.h> +#include <vespa/vespalib/data/slime/slime.h> +#include <vespa/vespalib/testkit/testapp.h> + +#include <vespa/document/datatype/datatype.h> +#include <vespa/document/fieldvalue/predicatefieldvalue.h> +#include <vespa/document/predicate/predicate_slime_builder.h> +#include <sstream> +#include <string> + +using std::ostringstream; +using std::string; +using vespalib::Slime; +using namespace document; + +namespace { + +void verifyEqual(const FieldValue & a, const FieldValue & b) { + ostringstream o1; + a.print(o1, false, ""); + ostringstream o2; + b.print(o2, false, ""); + ASSERT_EQUAL(o1.str(), o2.str()); +} + +TEST("require that PredicateFieldValue can be cloned, assigned, and operator=") { + PredicateSlimeBuilder builder; + builder.neg().feature("foo").value("bar").value("baz"); + PredicateFieldValue val(builder.build()); + + FieldValue::UP val2(val.clone()); + verifyEqual(val, *val2); + + PredicateFieldValue assigned; + assigned.assign(val); + verifyEqual(val, assigned); + + PredicateFieldValue operatorAssigned; + operatorAssigned = val; + verifyEqual(val, operatorAssigned); +} + +TEST("require that PredicateFieldValue can be created from datatype") { + FieldValue::UP val = DataType::PREDICATE->createFieldValue(); + ASSERT_TRUE(dynamic_cast<PredicateFieldValue *>(val.get())); +} + +TEST("require that PredicateFieldValue can be cloned") { + PredicateSlimeBuilder builder; + builder.neg().feature("foo").value("bar").value("baz"); + PredicateFieldValue val(builder.build()); + FieldValue::UP val2(val.clone()); + ostringstream o1; + val.print(o1, false, ""); + ostringstream o2; + val2->print(o2, false, ""); + ASSERT_EQUAL(o1.str(), o2.str()); +} + + +} // namespace + +TEST_MAIN() { TEST_RUN_ALL(); } |