/*
* Copyright (c) 2008 - 2009
* Jonathan Schleifer <js@webkeks.org>
*
* 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.
*/
#include "config.h"
#include <stdio.h>
#import "OFXMLElement.h"
#ifndef _WIN32
#define ZD "%zd"
#else
#define ZD "%u"
#endif
#define NUM_TESTS 5
#define SUCCESS \
printf("\r\033[1;%dmTests successful: " ZD "/%d\033[0m", \
(i == NUM_TESTS - 1 ? 32 : 33), i + 1, NUM_TESTS); \
fflush(stdout);
#define FAIL \
printf("\r\033[K\033[1;31mTest " ZD "/%d failed!\033[m\n", \
i + 1, NUM_TESTS); \
return 1;
#define CHECK(cond) \
if (cond) { \
SUCCESS \
} else { \
FAIL \
} \
i++;
#define CHECK_EXCEPT(code, exception) \
@try { \
code; \
FAIL \
} @catch (exception *e) { \
SUCCESS \
} \
i++;
int
main()
{
size_t i = 0;
OFXMLElement *elem;
elem = [OFXMLElement elementWithName: @"foo"];
CHECK([[elem string] isEqual: @"<foo/>"]);
[elem addAttributeWithName: @"foo"
stringValue: @"b&ar"];
CHECK([[elem string] isEqual: @"<foo foo='b&ar'/>"])
[elem addChild: [OFXMLElement elementWithName: @"bar"]];
CHECK([[elem string] isEqual: @"<foo foo='b&ar'><bar/></foo>"])
elem = [OFXMLElement elementWithName: @"foo"
stringValue: @"b&ar"];
CHECK([[elem string] isEqual: @"<foo>b&ar</foo>"])
[elem addAttributeWithName: @"foo"
stringValue: @"b&ar"];
CHECK([[elem string] isEqual: @"<foo foo='b&ar'>b&ar</foo>"])
puts("");
return 0;
}