summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-19 00:29:55 +0100
committerBenjamin Paassen <bpaassen@techfak.uni-bielefeld.de>2014-12-19 00:29:55 +0100
commit23e593eb69f6d0beb197f33ae31b479c60d9316f (patch)
tree77046b5372b178ed08bdce398841b3eb0de11cea /test
parent55d363bea503c0607c80604280c26c235a5d7ee1 (diff)
added convenience function for document construction and tested them.
Diffstat (limited to 'test')
-rw-r--r--test/core/model/DocumentTest.cpp12
-rw-r--r--test/core/model/TestDocument.hpp67
2 files changed, 75 insertions, 4 deletions
diff --git a/test/core/model/DocumentTest.cpp b/test/core/model/DocumentTest.cpp
index dd883a4..26553dd 100644
--- a/test/core/model/DocumentTest.cpp
+++ b/test/core/model/DocumentTest.cpp
@@ -19,8 +19,10 @@
#include <gtest/gtest.h>
#include <core/model/Document.hpp>
+#include <core/model/Domain.hpp>
-#include "ModelTestUtils.hpp"
+#include "TestDocument.hpp"
+#include "TestDomain.hpp"
namespace ousia {
namespace model {
@@ -32,9 +34,11 @@ TEST(Document, testDocumentConstruction)
Manager mgr{1};
// Get the domain.
Rooted<Domain> domain = constructBookDomain(mgr);
-
- // TODO: IMPLEMENT
- ASSERT_TRUE(true);
+ // Construct the document.
+ Rooted<Document> doc = constructBookDocument(mgr, domain);
+
+ // If that works we are happy already.
+ ASSERT_FALSE(doc.isNull());
}
}
}
diff --git a/test/core/model/TestDocument.hpp b/test/core/model/TestDocument.hpp
new file mode 100644
index 0000000..c99bdd3
--- /dev/null
+++ b/test/core/model/TestDocument.hpp
@@ -0,0 +1,67 @@
+/*
+ Ousía
+ Copyright (C) 2014, 2015 Benjamin Paaßen, Andreas Stöckel
+
+ This program is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation, either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef _MODEL_TEST_DOCUMENT_HPP_
+#define _MODEL_TEST_DOCUMENT_HPP_
+
+#include <core/model/Document.hpp>
+#include <core/model/Domain.hpp>
+#include <core/model/Typesystem.hpp>
+
+namespace ousia {
+namespace model {
+
+/**
+ * This constructs a fairly simple test document for the "book" domain. The
+ * structure of the document can be seen in the Code below.
+ */
+static Rooted<Document> constructBookDocument(Manager &mgr,
+ Rooted<Domain> bookDomain)
+{
+ // Start with the (empty) document.
+ Rooted<Document> doc{new Document(mgr, "myDoc.oxd")};
+
+ // Add the root.
+ Rooted<StructuredEntity> root =
+ StructuredEntity::buildRootEntity(doc, {bookDomain}, "book");
+ if (root.isNull()) {
+ return {nullptr};
+ }
+
+ // Add a paragraph.
+ Rooted<StructuredEntity> foreword =
+ StructuredEntity::buildEntity(root, {bookDomain}, "paragraph");
+ if (foreword.isNull()) {
+ return {nullptr};
+ }
+ // Add its text.
+ Variant text{std::map<std::string, Variant>{
+ {"content", Variant("Some introductory text")}}};
+ Rooted<DocumentPrimitive> text_primitive =
+ DocumentPrimitive::buildEntity(foreword, text, "text");
+ // Add a section.
+ Rooted<StructuredEntity> section =
+ StructuredEntity::buildEntity(root, {bookDomain}, "section");
+
+ return doc;
+}
+}
+}
+
+#endif /* _TEST_DOCUMENT_HPP_ */
+