/* 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 . */ #ifndef _MODEL_TEST_DOCUMENT_HPP_ #define _MODEL_TEST_DOCUMENT_HPP_ #include #include #include 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 constructBookDocument(Manager &mgr, Rooted bookDomain) { // Start with the (empty) document. Rooted doc{new Document(mgr, "myDoc.oxd")}; // Add the root. Rooted root = StructuredEntity::buildRootEntity(doc, {bookDomain}, "book"); if (root.isNull()) { return {nullptr}; } // Add a paragraph. Rooted foreword = StructuredEntity::buildEntity(root, {bookDomain}, "paragraph"); if (foreword.isNull()) { return {nullptr}; } // Add its text. Rooted foreword_text = StructuredEntity::buildEntity(foreword, {bookDomain}, "text"); if (foreword_text.isNull()) { return {nullptr}; } // And its primitive content Variant text{"Some introductory text"}; Rooted foreword_primitive = DocumentPrimitive::buildEntity(foreword_text, text, "content"); if (foreword_primitive.isNull()) { return {nullptr}; } // Add a section. Rooted section = StructuredEntity::buildEntity(root, {bookDomain}, "section"); // Add a paragraph for it. Rooted main = StructuredEntity::buildEntity(section, {bookDomain}, "paragraph"); if (main.isNull()) { return {nullptr}; } // Add its text. Rooted main_text = StructuredEntity::buildEntity(main, {bookDomain}, "text"); if (main_text.isNull()) { return {nullptr}; } // And its primitive content text = Variant{"Some actual text"}; Rooted main_primitive = DocumentPrimitive::buildEntity(main_text, text, "content"); if (main_primitive.isNull()) { return {nullptr}; } return doc; } } } #endif /* _TEST_DOCUMENT_HPP_ */