|
From: <svn...@op...> - 2009-04-17 11:23:57
|
Author: bellmich Date: Fri Apr 17 13:23:50 2009 New Revision: 1054 URL: http://libsyncml.opensync.org/changeset/1054 Log: Google has a wrong implementation of Alert Status. <Status> <CmdID>5</CmdID> <MsgRef>2</MsgRef> <CmdRef>3</CmdRef> <Cmd>Alert</Cmd> <SourceRef>contacts</SourceRef> <TargetRef>contacts</TargetRef> <Data>200</Data> <Item> <Data><![CDATA[20090417T112101Z]]></Data> </Item> </Status> The Item Data is the Next Anchor. Please see ticket #230 for more details. Modified: trunk/tests/CMakeLists.txt trunk/tests/check_xml_parser.c Modified: trunk/tests/CMakeLists.txt ============================================================================== --- trunk/tests/CMakeLists.txt Fri Apr 17 11:35:59 2009 (r1053) +++ trunk/tests/CMakeLists.txt Fri Apr 17 13:23:50 2009 (r1054) @@ -119,6 +119,7 @@ SML_ADD_TESTCASE( xml_parser_status ) SML_ADD_TESTCASE( xml_parser_status2 ) SML_ADD_TESTCASE( xml_parser_status3 ) + SML_ADD_TESTCASE( xml_parser_status_google ) SML_ADD_TESTCASE( xml_parser_final ) SML_ADD_TESTCASE( xml_parser_final2 ) SML_ADD_TESTCASE( xml_parser_cmd ) Modified: trunk/tests/check_xml_parser.c ============================================================================== --- trunk/tests/check_xml_parser.c Fri Apr 17 11:35:59 2009 (r1053) +++ trunk/tests/check_xml_parser.c Fri Apr 17 13:23:50 2009 (r1054) @@ -601,6 +601,46 @@ } END_TEST +START_TEST (xml_parser_status_google) +{ + const char *data = "<SyncML><SyncHdr><VerProto>SyncML/1.1</VerProto><VerDTD>1.1</VerDTD><MsgID>1</MsgID><SessionID>1</SessionID><Target><LocURI>test</LocURI></Target><Source><LocURI>test</LocURI></Source></SyncHdr><SyncBody><Status><CmdID>5</CmdID><MsgRef>2</MsgRef><CmdRef>3</CmdRef><Cmd>Alert</Cmd><SourceRef>contacts</SourceRef><TargetRef>contacts</TargetRef><Data>200</Data><Item><Data><![CDATA[20090417T092559Z]]></Data></Item></Status></SyncBody></SyncML>"; + SmlError *error = NULL; + SmlParser *parser = start_parser(data, &error); + sml_fail_unless(parser != NULL, "%s", smlErrorPrint(&error)); + + SmlHeader *header = NULL; + SmlCred *cred = NULL; + + sml_fail_unless(smlParserGetHeader(parser, &header, &cred, &error), NULL); + sml_fail_unless(header != NULL, NULL); + sml_fail_unless(cred == NULL, NULL); + sml_fail_unless(error == NULL, NULL); + + sml_fail_unless(header->messageID == 1, NULL); + smlHeaderFree(header); + + SmlStatus *status = NULL; + sml_fail_unless(smlParserGetStatus(parser, &status, &error), NULL); + sml_fail_unless(status != NULL, NULL); + sml_fail_unless(error == NULL, NULL); + smlStatusUnref(status); + + sml_fail_unless(smlParserGetStatus(parser, &status, &error), NULL); + sml_fail_unless(status == NULL, NULL); + sml_fail_unless(error == NULL, NULL); + + SmlCommand *cmd = NULL; + sml_fail_unless(smlParserGetCommand(parser, &cmd, &error), NULL); + sml_fail_unless(cmd == NULL, NULL); + sml_fail_unless(error == NULL, NULL); + + sml_fail_unless(smlParserEnd(parser, NULL, NULL, &error), NULL); + sml_fail_unless(error == NULL, NULL); + + smlParserFree(parser); +} +END_TEST + START_TEST (xml_parser_final) { const char *data = "<SyncML><SyncHdr><VerProto>SyncML/1.1</VerProto><VerDTD>1.1</VerDTD><MsgID>1</MsgID><SessionID>1</SessionID><Target><LocURI>test</LocURI></Target><Source><LocURI>test</LocURI></Source></SyncHdr><SyncBody><Status><CmdID>1</CmdID><MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>Sync</Cmd></Status><Status><CmdID>1</CmdID><MsgRef>1</MsgRef><CmdRef>0</CmdRef><Cmd>Sync</Cmd></Status><Final></Final></SyncBody></SyncML>"; |