const char* NCF1::name(unsigned int index) const { unsigned int c = count_properties(); if (!c) return NULL; std::map<std::string, std::string>::iterator it = m_p_symbols.begin(); if (index >= c) index = c-1; while (index > 0) { index--; it++; } return it->first.c_str(); }
TEST(XmlRpcArrayElementParser, PositiveTests) { // <object /> should be a match auto && val1 = test_positive("<object />"); EXPECT_EQ(0, val1.size()); // <array></array> should be a match auto && val2 = test_positive("<object></object>"); EXPECT_EQ(0, val2.size()); // object of 1 property { auto && val = test_positive("<object><p1>abc</p1></object>"); EXPECT_EQ(1, val.size()); // p1 auto found_p1 = count_properties(val, "p1") == 1; EXPECT_TRUE(found_p1); auto &p1 = get_property(val, "p1"); EXPECT_EQ("abc", boost::get<std::string>(p1)); } // object of 1 property, with space { auto && val = test_positive("<object> <p1>abc</p1> </object>"); EXPECT_EQ(1, val.size()); // p1 auto found_p1 = count_properties(val, "p1") == 1; EXPECT_TRUE(found_p1); auto &p1 = get_property(val, "p1"); EXPECT_EQ("abc", boost::get<std::string>(p1)); } // object of 1 bool property, with space { auto && val = test_positive("<object> <p1><true /></p1> </object>"); EXPECT_EQ(1, val.size()); // p1 auto found_p1 = count_properties(val, "p1") == 1; EXPECT_TRUE(found_p1); auto &p1 = get_property(val, "p1"); EXPECT_EQ(true, boost::get<bool>(p1)); } // object of 1 int property, with space { auto && val = test_positive("<object><p1><int>100</int></p1></object>"); EXPECT_EQ(1, val.size()); // p1 auto found_p1 = count_properties(val, "p1") == 1; EXPECT_TRUE(found_p1); auto &p1 = get_property(val, "p1"); EXPECT_EQ(100, boost::get<int>(p1)); } // object of mixed property types { auto && val = test_positive("\ <object>\ <p1><int>100</int></p1>\ <p2>hello, world</p2>\ <p3><true /></p3>\ </object>"); EXPECT_EQ(3, val.size()); // p1 auto found_p1 = count_properties(val, "p1") == 1; EXPECT_TRUE(found_p1); auto &p1 = get_property(val, "p1"); EXPECT_EQ(100, boost::get<int>(p1)); // p2 auto found_p2 = count_properties(val, "p2") == 1; EXPECT_TRUE(found_p2); auto &p2 = get_property(val, "p2"); EXPECT_EQ("hello, world", boost::get<std::string>(p2)); // p3 auto found_p3 = count_properties(val, "p3") == 1; EXPECT_TRUE(found_p3); auto &p3 = get_property(val, "p3"); EXPECT_EQ(true, boost::get<bool>(p3)); } }