From 0e3cf1963a4c5fa28f12a70b7d2f25c33580c182 Mon Sep 17 00:00:00 2001 From: Andreas Stöckel Date: Wed, 1 Apr 2015 22:05:58 +0200 Subject: Implement integration test framework --- test/integration/TestXmlParser.hpp | 89 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 test/integration/TestXmlParser.hpp (limited to 'test/integration/TestXmlParser.hpp') diff --git a/test/integration/TestXmlParser.hpp b/test/integration/TestXmlParser.hpp new file mode 100644 index 0000000..d6a2c45 --- /dev/null +++ b/test/integration/TestXmlParser.hpp @@ -0,0 +1,89 @@ +/* + Ousía + Copyright (C) 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 . +*/ + +/** + * @file TestXmlParser.hpp + * + * Contains a method to parse a XML file into a simple tree representation. + * + * @author Andreas Stöckel (astoecke@techfak.uni-bielefeld.de) + */ + +#ifndef _OUSIA_TEST_XML_PARSER_HPP_ +#define _OUSIA_TEST_XML_PARSER_HPP_ + +#include +#include +#include +#include +#include +#include + +#include "TestLogger.hpp" + +namespace ousia { +namespace test { + +/** + * Class used to represent a XML file. + */ +struct XmlNode { + std::weak_ptr parent; + std::vector> children; + std::map attributes; + std::string name; + std::string text; + int line; + int column; + + /** + * Default constructor, creates a root node. + */ + XmlNode() : line(0), column(0) {} + + /** + * Creates a node for the given parent with the given name. + * + * @param parent is the parent XML node. + */ + XmlNode(std::weak_ptr parent, const std::string &name) + : parent(parent), name(name), line(0), column(0) + { + } + + /** + * Returns the path to this node. + */ + std::string path(); + + /** + * Compares two XmlNode instances, logs differences to the given + * test::logger instance. + */ + bool compareTo(Logger &logger, std::shared_ptr other, + std::set &errExpected, std::set &errActual); +}; + +std::pair> parseXml(Logger &logger, + std::istream &is, + std::set &errLines); + +} +} + +#endif /* _OUSIA_TEST_XML_PARSER_HPP_ */ -- cgit v1.2.3