summaryrefslogtreecommitdiff
path: root/slicer/xml/testSpecifics.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'slicer/xml/testSpecifics.cpp')
-rw-r--r--slicer/xml/testSpecifics.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/slicer/xml/testSpecifics.cpp b/slicer/xml/testSpecifics.cpp
new file mode 100644
index 0000000..20f65fe
--- /dev/null
+++ b/slicer/xml/testSpecifics.cpp
@@ -0,0 +1,48 @@
+#define BOOST_TEST_MODULE db_insert
+#include <boost/test/unit_test.hpp>
+#include <slicer/slicer.h>
+#include "serializer.h"
+#include <libxml++/parsers/domparser.h>
+#include <types.h>
+
+template <typename T, typename ... P>
+T
+BoostThrowWrapperHelper(P && ... p)
+{
+ return Slicer::DeserializeAny<Slicer::XmlDocumentDeserializer, T>(p...);
+}
+
+BOOST_AUTO_TEST_CASE( boolean_values )
+{
+ xmlpp::DomParser doc;
+ doc.parse_memory("<Boolean>true</Boolean>");
+ BOOST_REQUIRE_EQUAL(true, BoostThrowWrapperHelper<bool>(doc.get_document()));
+ doc.parse_memory("<Boolean>false</Boolean>");
+ BOOST_REQUIRE_EQUAL(false, BoostThrowWrapperHelper<bool>(doc.get_document()));
+ doc.parse_memory("<Boolean>nonsense</Boolean>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<bool>(doc.get_document()), Slicer::BadBooleanValue);
+ doc.parse_memory("<Boolean> </Boolean>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<bool>(doc.get_document()), Slicer::BadBooleanValue);
+ doc.parse_memory("<Boolean></Boolean>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<bool>(doc.get_document()), Slicer::BadBooleanValue);
+}
+
+BOOST_AUTO_TEST_CASE( int_values )
+{
+ xmlpp::DomParser doc;
+ doc.parse_memory("<Int>13</Int>");
+ BOOST_REQUIRE_EQUAL(13, BoostThrowWrapperHelper<Ice::Int>(doc.get_document()));
+ doc.parse_memory("<Int>84</Int>");
+ BOOST_REQUIRE_EQUAL(84, BoostThrowWrapperHelper<Ice::Int>(doc.get_document()));
+ doc.parse_memory("<Int>0</Int>");
+ BOOST_REQUIRE_EQUAL(0, BoostThrowWrapperHelper<Ice::Int>(doc.get_document()));
+ doc.parse_memory("<Int>-4</Int>");
+ BOOST_REQUIRE_EQUAL(-4, BoostThrowWrapperHelper<Ice::Int>(doc.get_document()));
+ doc.parse_memory("<Int> </Int>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<Ice::Int>(doc.get_document()), std::bad_cast);
+ doc.parse_memory("<Int>notanint</Int>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<Ice::Int>(doc.get_document()), std::bad_cast);
+ doc.parse_memory("<Int></Int>");
+ BOOST_REQUIRE_THROW(BoostThrowWrapperHelper<Ice::Int>(doc.get_document()), std::bad_cast);
+}
+