diff options
author | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-19 00:29:55 +0100 |
---|---|---|
committer | Benjamin Paassen <bpaassen@techfak.uni-bielefeld.de> | 2014-12-19 00:29:55 +0100 |
commit | 23e593eb69f6d0beb197f33ae31b479c60d9316f (patch) | |
tree | 77046b5372b178ed08bdce398841b3eb0de11cea /test | |
parent | 55d363bea503c0607c80604280c26c235a5d7ee1 (diff) |
added convenience function for document construction and tested them.
Diffstat (limited to 'test')
-rw-r--r-- | test/core/model/DocumentTest.cpp | 12 | ||||
-rw-r--r-- | test/core/model/TestDocument.hpp | 67 |
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_ */ + |