summaryrefslogtreecommitdiffstats
path: root/document/src/tests/serialization/vespadocumentserializer_test.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'document/src/tests/serialization/vespadocumentserializer_test.cpp')
-rw-r--r--document/src/tests/serialization/vespadocumentserializer_test.cpp28
1 files changed, 28 insertions, 0 deletions
diff --git a/document/src/tests/serialization/vespadocumentserializer_test.cpp b/document/src/tests/serialization/vespadocumentserializer_test.cpp
index 9da20e5a84c..57481666f28 100644
--- a/document/src/tests/serialization/vespadocumentserializer_test.cpp
+++ b/document/src/tests/serialization/vespadocumentserializer_test.cpp
@@ -956,6 +956,34 @@ TEST_F("ReferenceFieldValue with ID serialization matches Java", RefFixture) {
f.verify_cross_language_serialization("reference_with_id", value);
}
+struct AssociatedDocumentRepoFixture {
+ const DocumentType& doc_type{repo.getDocumentType()};
+ DocumentId doc_id{"doc::testdoc"};
+ Document source_doc{doc_type, doc_id};
+
+ std::unique_ptr<Document> roundtrip_serialize_source_document() {
+ nbostream stream;
+ VespaDocumentSerializer serializer(stream);
+ serializer.write(source_doc);
+
+ auto deserialized_doc = std::make_unique<Document>();
+ VespaDocumentDeserializer deserializer(repo, stream, serialization_version);
+ deserializer.read(*deserialized_doc);
+ return deserialized_doc;
+ }
+};
+
+TEST_F("Deserializing non-empty document associates correct repo with document instance", AssociatedDocumentRepoFixture) {
+ f.source_doc.setValue(f.doc_type.getField("header field"), IntFieldValue(42));
+ auto deserialized_doc = f.roundtrip_serialize_source_document();
+ EXPECT_EQUAL(&doc_repo, deserialized_doc->getRepo());
+}
+
+TEST_F("Deserializing empty document associates correct repo with document instance", AssociatedDocumentRepoFixture) {
+ auto deserialized_doc = f.roundtrip_serialize_source_document();
+ EXPECT_EQUAL(&doc_repo, deserialized_doc->getRepo());
+}
+
} // namespace
TEST_MAIN() { TEST_RUN_ALL(); }