예제 #1
0
파일: ncf1.cpp 프로젝트: 4rknova/xtracer
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();
}
예제 #2
0
파일: object_tests.cpp 프로젝트: piguin/p6
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));
    }
}