/* * Copyright (c) 2010 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ #include #include #include using namespace Swift; class AttributeMapTest : public CppUnit::TestFixture { CPPUNIT_TEST_SUITE(AttributeMapTest); CPPUNIT_TEST(testGetAttribute_Namespaced); CPPUNIT_TEST(testGetAttribute_Namespaced_Prefix); CPPUNIT_TEST(testGetBoolAttribute_True); CPPUNIT_TEST(testGetBoolAttribute_1); CPPUNIT_TEST(testGetBoolAttribute_False); CPPUNIT_TEST(testGetBoolAttribute_0); CPPUNIT_TEST(testGetBoolAttribute_Invalid); CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultTrue); CPPUNIT_TEST(testGetBoolAttribute_UnknownWithDefaultFalse); CPPUNIT_TEST_SUITE_END(); public: void testGetAttribute_Namespaced() { AttributeMap testling; testling.addAttribute("lang", "", "nl"); testling.addAttribute("lang", "http://www.w3.org/XML/1998/namespace", "en"); testling.addAttribute("lang", "", "fr"); CPPUNIT_ASSERT_EQUAL(std::string("en"), testling.getAttribute("lang", "http://www.w3.org/XML/1998/namespace")); } void testGetAttribute_Namespaced_Prefix() { AttributeMap testling; testling.addAttribute("lang", "", "prefix", "nl"); testling.addAttribute("lang", "http://www.w3.org/XML/1998/namespace", "prefix", "en"); testling.addAttribute("lang", "", "prefix", "fr"); CPPUNIT_ASSERT_EQUAL(std::string("en"), testling.getAttribute("lang", "http://www.w3.org/XML/1998/namespace")); const auto& entries = testling.getEntries(); auto it = std::find_if(entries.begin(), entries.end(), [](const AttributeMap::Entry& e) { return e.getValue() == "en"; }); const bool found = it != entries.end(); CPPUNIT_ASSERT_EQUAL(true, found); CPPUNIT_ASSERT_EQUAL(std::string("prefix"), it->getAttribute().getPrefix()); } void testGetBoolAttribute_True() { AttributeMap testling; testling.addAttribute("foo", "", "true"); CPPUNIT_ASSERT(testling.getBoolAttribute("foo")); } void testGetBoolAttribute_1() { AttributeMap testling; testling.addAttribute("foo", "", "1"); CPPUNIT_ASSERT(testling.getBoolAttribute("foo")); } void testGetBoolAttribute_False() { AttributeMap testling; testling.addAttribute("foo", "", "false"); CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); } void testGetBoolAttribute_0() { AttributeMap testling; testling.addAttribute("foo", "", "0"); CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); } void testGetBoolAttribute_Invalid() { AttributeMap testling; testling.addAttribute("foo", "", "bla"); CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", true)); } void testGetBoolAttribute_UnknownWithDefaultTrue() { AttributeMap testling; CPPUNIT_ASSERT(testling.getBoolAttribute("foo", true)); } void testGetBoolAttribute_UnknownWithDefaultFalse() { AttributeMap testling; CPPUNIT_ASSERT(!testling.getBoolAttribute("foo", false)); } }; CPPUNIT_TEST_SUITE_REGISTRATION(AttributeMapTest);