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); }
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; } } }
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); }
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); }
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; } } }