From 9f0a71f4b6003383979c43d9958b9f347c826145 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Sun, 30 Apr 2017 00:00:30 -0400 Subject: [PATCH] Tests: Added dom tests --- test/dom.t.cpp | 60 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/test/dom.t.cpp b/test/dom.t.cpp index 9edaa2291..cd2fd5a10 100644 --- a/test/dom.t.cpp +++ b/test/dom.t.cpp @@ -25,6 +25,7 @@ //////////////////////////////////////////////////////////////////////////////// #include +#include // TODO Remove. #include #include #include @@ -32,13 +33,68 @@ Context context; +//////////////////////////////////////////////////////////////////////////////// +bool providerString (const std::string& path, Variant& var) +{ + if (path == "name") + { + var = Variant ("value"); + return true; + } + else if (path == "name.next") + { + var = Variant ("value.next"); + return true; + } + else if (path == "foo") + { + var = Variant ("bar"); + return true; + } + else if (path == "name.size") + { + var = Variant (6); + return true; + } + + return false; +} + //////////////////////////////////////////////////////////////////////////////// int main (int, char**) { - UnitTest t (1); + UnitTest t (12); DOM dom; - t.is (dom.count (), 0, "DOM empty count is zero"); + t.is (dom.count (), 0, "DOM empty count is zero"); + + dom.addSource ("name", &providerString); + dom.addSource ("name.next", &providerString); + dom.addSource ("name.size", &providerString); + dom.addSource ("foo", &providerString); + std::cout << dom.dump () << '\n'; + t.is (dom.count (), 4, "DOM now contains 4 nodes"); + + t.ok (dom.valid ("name"), "DOM 'name' valid"); + t.ok (dom.valid ("name.next"), "DOM 'name.next' valid"); + t.ok (dom.valid ("name.size"), "DOM 'name.size' valid"); + t.ok (dom.valid ("foo"), "DOM 'foo' valid"); + t.notok (dom.valid ("missing"), "DOM 'missing' not valid"); + + auto v = dom.get ("name"); + t.is (v.get_string (), "value", "DOM get 'name' --> 'value'"); + + v = dom.get ("name.next"); + t.is (v.get_string (), "value.next", "DOM get 'name.next' --> 'value.next'"); + + v = dom.get ("name.size"); + t.is (v.get_integer (), 6, "DOM get 'name.size' --> 6"); + + v = dom.get ("foo"); + t.is (v.get_string (), "bar", "DOM get 'name.size' --> 6"); + + v = dom.get ("missing"); + t.is (v.get_string (), "", "DOM get 'missing' --> ''"); return 0; }