1*6be67779SAndroid Build Coastguard Worker /* Run the Expat test suite
2*6be67779SAndroid Build Coastguard Worker __ __ _
3*6be67779SAndroid Build Coastguard Worker ___\ \/ /_ __ __ _| |_
4*6be67779SAndroid Build Coastguard Worker / _ \\ /| '_ \ / _` | __|
5*6be67779SAndroid Build Coastguard Worker | __// \| |_) | (_| | |_
6*6be67779SAndroid Build Coastguard Worker \___/_/\_\ .__/ \__,_|\__|
7*6be67779SAndroid Build Coastguard Worker |_| XML parser
8*6be67779SAndroid Build Coastguard Worker
9*6be67779SAndroid Build Coastguard Worker Copyright (c) 2001-2006 Fred L. Drake, Jr. <[email protected]>
10*6be67779SAndroid Build Coastguard Worker Copyright (c) 2003 Greg Stein <[email protected]>
11*6be67779SAndroid Build Coastguard Worker Copyright (c) 2005-2007 Steven Solie <[email protected]>
12*6be67779SAndroid Build Coastguard Worker Copyright (c) 2005-2012 Karl Waclawek <[email protected]>
13*6be67779SAndroid Build Coastguard Worker Copyright (c) 2016-2023 Sebastian Pipping <[email protected]>
14*6be67779SAndroid Build Coastguard Worker Copyright (c) 2017-2022 Rhodri James <[email protected]>
15*6be67779SAndroid Build Coastguard Worker Copyright (c) 2017 Joe Orton <[email protected]>
16*6be67779SAndroid Build Coastguard Worker Copyright (c) 2017 José Gutiérrez de la Concha <[email protected]>
17*6be67779SAndroid Build Coastguard Worker Copyright (c) 2018 Marco Maggi <[email protected]>
18*6be67779SAndroid Build Coastguard Worker Copyright (c) 2019 David Loffredo <[email protected]>
19*6be67779SAndroid Build Coastguard Worker Copyright (c) 2020 Tim Gates <[email protected]>
20*6be67779SAndroid Build Coastguard Worker Copyright (c) 2021 Donghee Na <[email protected]>
21*6be67779SAndroid Build Coastguard Worker Copyright (c) 2022 Sean McBride <[email protected]>
22*6be67779SAndroid Build Coastguard Worker Copyright (c) 2023 Sony Corporation / Snild Dolkow <[email protected]>
23*6be67779SAndroid Build Coastguard Worker Licensed under the MIT license:
24*6be67779SAndroid Build Coastguard Worker
25*6be67779SAndroid Build Coastguard Worker Permission is hereby granted, free of charge, to any person obtaining
26*6be67779SAndroid Build Coastguard Worker a copy of this software and associated documentation files (the
27*6be67779SAndroid Build Coastguard Worker "Software"), to deal in the Software without restriction, including
28*6be67779SAndroid Build Coastguard Worker without limitation the rights to use, copy, modify, merge, publish,
29*6be67779SAndroid Build Coastguard Worker distribute, sublicense, and/or sell copies of the Software, and to permit
30*6be67779SAndroid Build Coastguard Worker persons to whom the Software is furnished to do so, subject to the
31*6be67779SAndroid Build Coastguard Worker following conditions:
32*6be67779SAndroid Build Coastguard Worker
33*6be67779SAndroid Build Coastguard Worker The above copyright notice and this permission notice shall be included
34*6be67779SAndroid Build Coastguard Worker in all copies or substantial portions of the Software.
35*6be67779SAndroid Build Coastguard Worker
36*6be67779SAndroid Build Coastguard Worker THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
37*6be67779SAndroid Build Coastguard Worker EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
38*6be67779SAndroid Build Coastguard Worker MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
39*6be67779SAndroid Build Coastguard Worker NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
40*6be67779SAndroid Build Coastguard Worker DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
41*6be67779SAndroid Build Coastguard Worker OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
42*6be67779SAndroid Build Coastguard Worker USE OR OTHER DEALINGS IN THE SOFTWARE.
43*6be67779SAndroid Build Coastguard Worker */
44*6be67779SAndroid Build Coastguard Worker
45*6be67779SAndroid Build Coastguard Worker #include "expat_config.h"
46*6be67779SAndroid Build Coastguard Worker
47*6be67779SAndroid Build Coastguard Worker #include <stdio.h>
48*6be67779SAndroid Build Coastguard Worker #include <string.h>
49*6be67779SAndroid Build Coastguard Worker
50*6be67779SAndroid Build Coastguard Worker #include "expat.h"
51*6be67779SAndroid Build Coastguard Worker #include "internal.h"
52*6be67779SAndroid Build Coastguard Worker #include "minicheck.h"
53*6be67779SAndroid Build Coastguard Worker #include "common.h"
54*6be67779SAndroid Build Coastguard Worker
55*6be67779SAndroid Build Coastguard Worker #include "basic_tests.h"
56*6be67779SAndroid Build Coastguard Worker #include "ns_tests.h"
57*6be67779SAndroid Build Coastguard Worker #include "misc_tests.h"
58*6be67779SAndroid Build Coastguard Worker #include "alloc_tests.h"
59*6be67779SAndroid Build Coastguard Worker #include "nsalloc_tests.h"
60*6be67779SAndroid Build Coastguard Worker #include "acc_tests.h"
61*6be67779SAndroid Build Coastguard Worker
62*6be67779SAndroid Build Coastguard Worker XML_Parser g_parser = NULL;
63*6be67779SAndroid Build Coastguard Worker
64*6be67779SAndroid Build Coastguard Worker static Suite *
make_suite(void)65*6be67779SAndroid Build Coastguard Worker make_suite(void) {
66*6be67779SAndroid Build Coastguard Worker Suite *s = suite_create("basic");
67*6be67779SAndroid Build Coastguard Worker
68*6be67779SAndroid Build Coastguard Worker make_basic_test_case(s);
69*6be67779SAndroid Build Coastguard Worker make_namespace_test_case(s);
70*6be67779SAndroid Build Coastguard Worker make_miscellaneous_test_case(s);
71*6be67779SAndroid Build Coastguard Worker make_alloc_test_case(s);
72*6be67779SAndroid Build Coastguard Worker make_nsalloc_test_case(s);
73*6be67779SAndroid Build Coastguard Worker #if XML_GE == 1
74*6be67779SAndroid Build Coastguard Worker make_accounting_test_case(s);
75*6be67779SAndroid Build Coastguard Worker #endif
76*6be67779SAndroid Build Coastguard Worker
77*6be67779SAndroid Build Coastguard Worker return s;
78*6be67779SAndroid Build Coastguard Worker }
79*6be67779SAndroid Build Coastguard Worker
80*6be67779SAndroid Build Coastguard Worker int
main(int argc,char * argv[])81*6be67779SAndroid Build Coastguard Worker main(int argc, char *argv[]) {
82*6be67779SAndroid Build Coastguard Worker int i, nf;
83*6be67779SAndroid Build Coastguard Worker int verbosity = CK_NORMAL;
84*6be67779SAndroid Build Coastguard Worker Suite *s = make_suite();
85*6be67779SAndroid Build Coastguard Worker SRunner *sr = srunner_create(s);
86*6be67779SAndroid Build Coastguard Worker
87*6be67779SAndroid Build Coastguard Worker for (i = 1; i < argc; ++i) {
88*6be67779SAndroid Build Coastguard Worker char *opt = argv[i];
89*6be67779SAndroid Build Coastguard Worker if (strcmp(opt, "-v") == 0 || strcmp(opt, "--verbose") == 0)
90*6be67779SAndroid Build Coastguard Worker verbosity = CK_VERBOSE;
91*6be67779SAndroid Build Coastguard Worker else if (strcmp(opt, "-q") == 0 || strcmp(opt, "--quiet") == 0)
92*6be67779SAndroid Build Coastguard Worker verbosity = CK_SILENT;
93*6be67779SAndroid Build Coastguard Worker else {
94*6be67779SAndroid Build Coastguard Worker fprintf(stderr, "runtests: unknown option '%s'\n", opt);
95*6be67779SAndroid Build Coastguard Worker return 2;
96*6be67779SAndroid Build Coastguard Worker }
97*6be67779SAndroid Build Coastguard Worker }
98*6be67779SAndroid Build Coastguard Worker if (verbosity != CK_SILENT)
99*6be67779SAndroid Build Coastguard Worker printf("Expat version: %" XML_FMT_STR "\n", XML_ExpatVersion());
100*6be67779SAndroid Build Coastguard Worker
101*6be67779SAndroid Build Coastguard Worker for (g_chunkSize = 0; g_chunkSize <= 5; g_chunkSize++) {
102*6be67779SAndroid Build Coastguard Worker for (int enabled = 0; enabled <= 1; ++enabled) {
103*6be67779SAndroid Build Coastguard Worker char context[100];
104*6be67779SAndroid Build Coastguard Worker g_reparseDeferralEnabledDefault = enabled;
105*6be67779SAndroid Build Coastguard Worker snprintf(context, sizeof(context), "chunksize=%d deferral=%d",
106*6be67779SAndroid Build Coastguard Worker g_chunkSize, enabled);
107*6be67779SAndroid Build Coastguard Worker context[sizeof(context) - 1] = '\0';
108*6be67779SAndroid Build Coastguard Worker srunner_run_all(sr, context, verbosity);
109*6be67779SAndroid Build Coastguard Worker }
110*6be67779SAndroid Build Coastguard Worker }
111*6be67779SAndroid Build Coastguard Worker srunner_summarize(sr, verbosity);
112*6be67779SAndroid Build Coastguard Worker nf = srunner_ntests_failed(sr);
113*6be67779SAndroid Build Coastguard Worker srunner_free(sr);
114*6be67779SAndroid Build Coastguard Worker
115*6be67779SAndroid Build Coastguard Worker return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
116*6be67779SAndroid Build Coastguard Worker }
117