コード例 #1
0
void DevInfPackageTest::testPutGet()
{

    QList<StoragePlugin*> storage_plugins;
    DeviceInfo devInfo;
    MockStorage storage("storage");
    storage_plugins.append(&storage);
    const int SIZE_TRESHOLD = 10000;

    DevInfPackage pkg(storage_plugins, devInfo, SYNCML_1_2, ROLE_CLIENT );

    SyncMLMessage msg(HeaderParams(), SYNCML_1_2);
    int remaining = SIZE_TRESHOLD;
    QCOMPARE(pkg.write(msg, remaining, false, SYNCML_1_2), true);
    QVERIFY(remaining < SIZE_TRESHOLD);

    QtEncoder encoder;
    QByteArray result_xml;
    QVERIFY( encoder.encodeToXML( msg, result_xml, true ) );

    QByteArray putData = extractElement( result_xml, "<Put>", "</Put>" );
    QVERIFY( !putData.isEmpty() );

    verifyDevInf(putData);

    QByteArray getData = extractElement( result_xml, "<Get>", "</Get>" );
    QVERIFY( !getData.isEmpty() );

    verifyGet(getData);

}
コード例 #2
0
ファイル: JsonDetail.cpp プロジェクト: argarak/vcmi
bool JsonParser::extractArray(JsonNode &node)
{
	pos++;
	node.setType(JsonNode::DATA_VECTOR);

	if (!extractWhitespace())
		return false;

	//Empty array found
	if (input[pos] == ']')
	{
		pos++;
		return true;
	}

	while (true)
	{
		//NOTE: currently 50% of time is this vector resizing.
		//May be useful to use list during parsing and then swap() all items to vector
		node.Vector().resize(node.Vector().size()+1);

		if (!extractElement(node.Vector().back(), ']'))
			return false;

		if (input[pos] == ']')
		{
			pos++;
			return true;
		}
	}
}
コード例 #3
0
void DevInfPackageTest::testResultsGet()
{

    QList<StoragePlugin*> storage_plugins;
    DeviceInfo devInfo;
    MockStorage storage("storage");
    storage_plugins.append(&storage);
    const int msgId = 99;
    const int cmdId = 109;
    const int SIZE_TRESHOLD = 10000;
    bool retrieveRemoteDevInf = true;

    DevInfPackage pkg(msgId, cmdId, storage_plugins, devInfo, SYNCML_1_2, ROLE_CLIENT, retrieveRemoteDevInf );

    SyncMLMessage msg(HeaderParams(), SYNCML_1_2);
    int remaining = SIZE_TRESHOLD;
    QCOMPARE(pkg.write(msg, remaining, false, SYNCML_1_2), true);
    QVERIFY(remaining < SIZE_TRESHOLD);

    QtEncoder encoder;
    QByteArray result_xml;
    QVERIFY( encoder.encodeToXML( msg, result_xml, true ) );

    QByteArray resultsData  = extractElement( result_xml, "<Results>", "</Results>" );
    QVERIFY( !resultsData.isEmpty() );

    QByteArray msgRef = extractElement( resultsData, "<MsgRef>", "</MsgRef" );
    QVERIFY( !msgRef.isEmpty() );
    QCOMPARE( msgRef.toInt(), msgId );

    QByteArray cmdRef = extractElement( resultsData, "<CmdRef>", "</CmdRef" );
    QVERIFY( !cmdRef.isEmpty() );
    QCOMPARE( cmdRef.toInt(), cmdId );

    verifyDevInf(resultsData);

    QByteArray getData = extractElement( result_xml, "<Get>", "</Get>" );
    QVERIFY( !getData.isEmpty() );

    verifyGet(getData);

}
コード例 #4
0
ファイル: xml.c プロジェクト: jac8b/libcubic
void cub_XmlElement_forEach(const char *value, cub_XmlElementCallback callback)
{
	char *buffer = strcpy(malloc(strlen(value) + 1), value);
	char *ptr = buffer;

	Element e = {0};
	while (extractElement(&ptr, &e))
		if(!callback(e.name, e.attributes, e.value))
			break;
		
	free(buffer);
}
コード例 #5
0
ファイル: JsonDetail.cpp プロジェクト: argarak/vcmi
bool JsonParser::extractStruct(JsonNode &node)
{
	node.setType(JsonNode::DATA_STRUCT);
	pos++;

	if (!extractWhitespace())
		return false;

	//Empty struct found
	if (input[pos] == '}')
	{
		pos++;
		return true;
	}

	while (true)
	{
		if (!extractWhitespace())
			return false;

		std::string key;
		if (!extractString(key))
			return false;

		if (node.Struct().find(key) != node.Struct().end())
			error("Dublicated element encountered!", true);

		if (!extractSeparator())
			return false;

		if (!extractElement(node.Struct()[key], '}'))
			return false;

		if (input[pos] == '}')
		{
			pos++;
			return true;
		}
	}
}