summaryrefslogtreecommitdiffstats
path: root/test/integer_set.c
blob: e25648f71c53bf0a59a155b7b9a6c4ee5d794f7e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#include <stdio.h>
#include <stdint.h>
#include <inttypes.h>
#include <stdlib.h>

#include <string.h>
#include <plist/plist.h>

void print_plist(plist_t pl)
{
	char *xml = NULL;
	uint32_t xlen = 0;
	plist_to_xml(pl, &xml, &xlen);
	if (xml) {
		printf("%s\n", xml);
	}
	free(xml);
}

int main(int argc, char** argv)
{
	int err = 0;
	char *xml = NULL;
	uint32_t xlen = 0;
	plist_t iii = plist_new_int(0);

	/* test 1 */
	plist_set_uint_val(iii, 0x8000000000000000LL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match1 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>9223372036854775808</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match1) != 0) {
		printf("ERROR: plist_set_uint_val with 0x8000000000000000LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_uint_val with 0x8000000000000000LL\n");
	}
	free(xml);
	xml = NULL;

	/* test 2 */
	plist_set_int_val(iii, 0x8000000000000000LL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match2 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>-9223372036854775808</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match2) != 0) {
		printf("ERROR: plist_set_int_val with 0x8000000000000000LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_int_val with 0x8000000000000000LL\n");
	}
	free(xml);
	xml = NULL;

	/* test 3 */
	plist_set_uint_val(iii, (uint64_t)-1LL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match3 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>18446744073709551615</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match3) != 0) {
		printf("ERROR: plist_set_uint_val with (uint64_t)-1LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_uint_val with (uint64_t)-1LL\n");
	}
	free(xml);
	xml = NULL;

	/* test 4 */
	plist_set_int_val(iii, -1LL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match4 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>-1</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match4) != 0) {
		printf("ERROR: plist_set_int_val with -1LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_int_val with -1LL\n");
	}
	free(xml);
	xml = NULL;

	/* test 5 */
	plist_set_uint_val(iii, 0x8000000000000001LL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match5 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>9223372036854775809</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match5) != 0) {
		printf("ERROR: plist_set_uint_val with 0x8000000000000001LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_uint_val with 0x8000000000000001LL\n");
	}
	free(xml);
	xml = NULL;

	/* test 6 */
	plist_set_uint_val(iii, 18446744073709551615uLL);
	plist_to_xml(iii, &xml, &xlen);
	const char* match6 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
		"<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n"
		"<plist version=\"1.0\">\n"
		"<integer>18446744073709551615</integer>\n"
		"</plist>\n";
	if (strcmp(xml, match6) != 0) {
		printf("ERROR: plist_set_uint_val with 0x8000000000000001LL failed\n");
		err++;
	} else {
		printf("SUCCESS: plist_set_uint_val with 0x8000000000000001LL\n");
	}
	free(xml);
	xml = NULL;

	return (err > 0) ? EXIT_FAILURE : EXIT_SUCCESS;
}