/* * Copyright (c) 2008 * Jonathan Schleifer * * All rights reserved. * * This file is part of libobjfw. It may be distributed under the terms of the * Q Public License 1.0, which can be found in the file LICENSE included in * the packaging of this file. */ #import #import #import #import "OFXMLFactory.h" inline void check_result(char *result, const char *should) { if (!strcmp(result, should)) printf("%s is expected result\n", result); else { printf("%s is NOT expected result!", result); exit(1); } free(result); } inline void test_concat() { const char *c1 = "", *c2 = "bar", *c3 = ""; char *s1, *s2, *s3; char *strs[4]; if ((s1 = malloc(strlen(c1) + 1)) == NULL || (s2 = malloc(strlen(c2) + 1)) == NULL || (s3 = malloc(strlen(c3) + 1)) == NULL) exit(1); strncpy(s1, c1, strlen(c1) + 1); strncpy(s2, c2, strlen(c2) + 1); strncpy(s3, c3, strlen(c3) + 1); strs[0] = s1; strs[1] = s2; strs[2] = s3; strs[3] = NULL; check_result([OFXMLFactory concatAndFreeCStrings: strs], "bar"); } inline void test_create_stanza() { check_result([OFXMLFactory createStanza: "foo" withCloseTag: NO andCData: NULL, NULL], ""); check_result([OFXMLFactory createStanza: "foo" withCloseTag: NO andCData: NULL, "bar", "baz", "blub", "asd", NULL], ""); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: NULL, NULL], ""); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: "bar", NULL], "bar"); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: NULL, "bar", "b&az", NULL], ""); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: "bar", "bar", "b'az", NULL], "bar"); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: NULL, "bar", "b&az", "x", "asd\"", NULL], ""); check_result([OFXMLFactory createStanza: "foo" withCloseTag: YES andCData: "bar", "bar", "b'az", "x", "y", "a", "b", NULL], "bar"); } inline void test_escape() { check_result([OFXMLFactory escapeCString: " &welt'\"!&"], "<hallo> &welt'"!&"); } int main() { test_escape(); test_create_stanza(); test_concat(); return 0; }