aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerländer2014-05-08 20:14:35 +0200
committerAdrian Kummerländer2014-05-08 20:14:35 +0200
commit209f0b2fd9310f503d4599b12483fddc04d1f7dd (patch)
tree6ef70e3d00871ecd122db6e3bce7db6e5477f1f9
parent168537848c7317f81ba44d0986e6cd7da2afb976 (diff)
downloadInputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar.gz
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar.bz2
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar.lz
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar.xz
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.tar.zst
InputXSLT-209f0b2fd9310f503d4599b12483fddc04d1f7dd.zip
Removed gtest based test cases and added program options
* selectively testing document construction in plain C++ code has turned out to be more work than worth it ** i.e. removed test cases and GTest dependency * added boost::program_options based frontent to InputXSLT ** example command: "./test --transformation ../dummy/transform.xsl --target out.xml" ** the plan is to use a simple shell script that generated test transformations and compares the output to reference files
-rw-r--r--CMakeLists.txt34
-rw-r--r--README.md1
-rw-r--r--example.cc11
-rw-r--r--src/function/read_directory.h3
-rw-r--r--src/function/read_file.h3
-rw-r--r--src/function/read_xml_file.h3
-rw-r--r--test.cc52
-rw-r--r--tests/function_read_file.cc43
8 files changed, 71 insertions, 79 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 53fa29c..b6229ca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -10,9 +10,18 @@ include_directories(
src/
)
-add_library(
+set(
+ Libraries
InputXSLT
- STATIC
+ xalan-c
+ xerces-c
+ boost_system
+ boost_filesystem
+ boost_program_options
+)
+
+set(
+ Sources
src/plattform_guard.cc
src/transformation_facade.cc
src/function/read_file.cc
@@ -24,32 +33,17 @@ add_library(
)
add_executable(
- example
- example.cc
-)
-
-add_executable(
test
test.cc
- tests/function_read_file.cc
)
-set(
- Libraries
+add_library(
InputXSLT
- xalan-c
- xerces-c
- boost_system
- boost_filesystem
-)
-
-target_link_libraries(
- example
- ${Libraries}
+ STATIC
+ ${Sources}
)
target_link_libraries(
test
- gtest
${Libraries}
)
diff --git a/README.md b/README.md
index fc3d618..5ae65e5 100644
--- a/README.md
+++ b/README.md
@@ -19,3 +19,4 @@ Contrary to popular opinion I actually like XSLT as a content transformation lan
- Apache [Xalan](https://xalan.apache.org/) XSLT Processor
- Apache [Xerces](https://xerces.apache.org/) XML Library
- Boost [Filesystem](http://www.boost.org/doc/libs/1_55_0/libs/filesystem/doc/index.htm)
+- Boost [Program Options](http://www.boost.org/doc/libs/1_55_0/doc/html/program_options.html)
diff --git a/example.cc b/example.cc
deleted file mode 100644
index a0c122d..0000000
--- a/example.cc
+++ /dev/null
@@ -1,11 +0,0 @@
-#include "plattform_guard.h"
-#include "transformation_facade.h"
-
-int main(int, char**) {
- InputXSLT::PlattformGuard plattform;
- InputXSLT::TransformationFacade transformation("../dummy/transform.xsl");
-
- return transformation.generate("out.xml", {
- {"test", "42"}
- });
-}
diff --git a/src/function/read_directory.h b/src/function/read_directory.h
index d34a80a..85e7f1b 100644
--- a/src/function/read_directory.h
+++ b/src/function/read_directory.h
@@ -9,6 +9,9 @@ class FunctionReadDirectory : public FunctionBase<FunctionReadDirectory> {
public:
using FunctionBase<FunctionReadDirectory>::FunctionBase;
+ protected:
+ friend FunctionBase;
+
xercesc::DOMDocument* constructDocument(
const FilesystemContext&,
const boost::filesystem::path&
diff --git a/src/function/read_file.h b/src/function/read_file.h
index b89263e..b581ee5 100644
--- a/src/function/read_file.h
+++ b/src/function/read_file.h
@@ -9,6 +9,9 @@ class FunctionReadFile : public FunctionBase<FunctionReadFile> {
public:
using FunctionBase<FunctionReadFile>::FunctionBase;
+ protected:
+ friend FunctionBase;
+
xercesc::DOMDocument* constructDocument(
const FilesystemContext&,
const boost::filesystem::path&
diff --git a/src/function/read_xml_file.h b/src/function/read_xml_file.h
index b1d165d..4aebe56 100644
--- a/src/function/read_xml_file.h
+++ b/src/function/read_xml_file.h
@@ -9,6 +9,9 @@ class FunctionReadXmlFile : public FunctionBase<FunctionReadXmlFile> {
public:
using FunctionBase<FunctionReadXmlFile>::FunctionBase;
+ protected:
+ friend FunctionBase;
+
xercesc::DOMDocument* constructDocument(
const FilesystemContext&,
const boost::filesystem::path&
diff --git a/test.cc b/test.cc
index b3bf40e..9b978da 100644
--- a/test.cc
+++ b/test.cc
@@ -1,12 +1,54 @@
#include "plattform_guard.h"
#include "transformation_facade.h"
-#include "gtest/gtest.h"
+#include "boost/program_options.hpp"
-int main(int argc, char** argv) {
- InputXSLT::PlattformGuard plattform;
+#include <iostream>
- testing::InitGoogleTest(&argc, argv);
+int main(int ac, char** av) {
+ boost::program_options::options_description optionDescription(
+ "Supported options"
+ );
+
+ optionDescription.add_options()
+ ("transformation", boost::program_options::value<std::string>()->required(), "transformation file")
+ ("target", boost::program_options::value<std::string>()->required(), "target file")
+ ;
+
+ boost::program_options::variables_map variables;
+
+ boost::program_options::store(
+ boost::program_options::parse_command_line(
+ ac, av, optionDescription
+ ),
+ variables
+ );
+
+ try {
+ boost::program_options::notify(variables);
+ }
+ catch ( std::exception& exception ) {
+ std::cerr << exception.what() << std::endl;
+ }
+
+ if ( variables.count("transformation") &&
+ variables.count("target") ) {
+ InputXSLT::PlattformGuard plattform;
+
+ InputXSLT::TransformationFacade transformation(
+ variables["transformation"].as<std::string>()
+ );
+
+ return transformation.generate(
+ variables["target"].as<std::string>(),
+ {
+ {"test", "42"}
+ }
+ );
+ } else {
+ std::cout << optionDescription << std::endl;
+
+ return 1;
+ }
- return RUN_ALL_TESTS();
}
diff --git a/tests/function_read_file.cc b/tests/function_read_file.cc
deleted file mode 100644
index e0bb8da..0000000
--- a/tests/function_read_file.cc
+++ /dev/null
@@ -1,43 +0,0 @@
-#include "gtest/gtest.h"
-
-#include <xercesc/dom/DOMDocument.hpp>
-#include <xercesc/dom/DOMImplementation.hpp>
-#include <xercesc/dom/DOMElement.hpp>
-#include <xercesc/dom/DOMText.hpp>
-
-#include <string>
-
-#include "function/base.h"
-#include "function/read_file.h"
-
-typedef std::basic_string<XMLCh> XmlString;
-
-class FunctionReadFileTest : public ::testing::Test {
- friend InputXSLT::FunctionReadFile;
-};
-
-TEST_F(FunctionReadFileTest, constructDocumentTest) {
- const InputXSLT::FilesystemContext fsContext("../tests");
- const boost::filesystem::path filePath(
- fsContext.resolve("./function_read_file.cc")
- );
-
- InputXSLT::FunctionReadFile function;
-
- xercesc::DOMDocument* const domDocument = function.constructDocument(
- fsContext,
- filePath
- );
-
- EXPECT_NE(domDocument, nullptr);
-
- EXPECT_EQ(
- XmlString(domDocument->getDocumentElement()->getNodeName()),
- XmlString(reinterpret_cast<const XMLCh*>(u"content"))
- );
-
- EXPECT_EQ(
- XmlString(domDocument->getDocumentElement()->getFirstChild()->getNodeName()),
- XmlString(reinterpret_cast<const XMLCh*>(u"result"))
- );
-}