Skip to content

Commit da40f93

Browse files
add cpp cases
1 parent b51be27 commit da40f93

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed

code/tests/cases/test_xml.cpp

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
/*
2+
* -----------------------------------------------------------------------------
3+
* Project: Fossil Logic
4+
*
5+
* This file is part of the Fossil Logic project, which aims to develop high-
6+
* performance, cross-platform applications and libraries. The code contained
7+
* herein is subject to the terms and conditions defined in the project license.
8+
*
9+
* Author: Michael Gene Brockus (Dreamer)
10+
*
11+
* Copyright (C) 2024 Fossil Logic. All rights reserved.
12+
* -----------------------------------------------------------------------------
13+
*/
14+
#include <fossil/pizza/framework.h>
15+
#include "fossil/media/framework.h"
16+
17+
18+
// * * * * * * * * * * * * * * * * * * * * * * * *
19+
// * Fossil Logic Test Utilities
20+
// * * * * * * * * * * * * * * * * * * * * * * * *
21+
// Setup steps for things like test fixtures and
22+
// mock objects are set here.
23+
// * * * * * * * * * * * * * * * * * * * * * * * *
24+
25+
FOSSIL_TEST_SUITE(cpp_xml_fixture);
26+
27+
FOSSIL_SETUP(cpp_xml_fixture) {
28+
// Setup for XML tests
29+
}
30+
31+
FOSSIL_TEARDOWN(cpp_xml_fixture) {
32+
// Teardown for XML tests
33+
}
34+
35+
// * * * * * * * * * * * * * * * * * * * * * * * *
36+
// * Fossil Logic Test Cases
37+
// * * * * * * * * * * * * * * * * * * * * * * * *
38+
// The test cases below are provided as samples, inspired
39+
// by the Meson build system's approach of using test cases
40+
// as samples for library usage.
41+
// * * * * * * * * * * * * * * * * * * * * * * * *
42+
43+
FOSSIL_TEST_CASE(cpp_test_xml_new_element) {
44+
fossil::media::Xml node = fossil::media::Xml::new_element("foo");
45+
ASSUME_NOT_CNULL(node.get());
46+
ASSUME_ITS_EQUAL_CSTR(node.get()->name, "foo");
47+
ASSUME_ITS_EQUAL_CSTR(node.type_name(), "element");
48+
}
49+
50+
FOSSIL_TEST_CASE(cpp_test_xml_new_text) {
51+
fossil::media::Xml node = fossil::media::Xml::new_text("bar");
52+
ASSUME_NOT_CNULL(node.get());
53+
ASSUME_ITS_EQUAL_CSTR(node.get()->content, "bar");
54+
ASSUME_ITS_EQUAL_CSTR(node.type_name(), "text");
55+
}
56+
57+
FOSSIL_TEST_CASE(cpp_test_xml_new_comment) {
58+
fossil::media::Xml node = fossil::media::Xml::new_comment("baz");
59+
ASSUME_NOT_CNULL(node.get());
60+
ASSUME_ITS_EQUAL_CSTR(node.get()->content, "baz");
61+
ASSUME_ITS_EQUAL_CSTR(node.type_name(), "comment");
62+
}
63+
64+
FOSSIL_TEST_CASE(cpp_test_xml_new_cdata) {
65+
fossil::media::Xml node = fossil::media::Xml::new_cdata("cdata content");
66+
ASSUME_NOT_CNULL(node.get());
67+
ASSUME_ITS_EQUAL_CSTR(node.get()->content, "cdata content");
68+
ASSUME_ITS_EQUAL_CSTR(node.type_name(), "cdata");
69+
}
70+
71+
FOSSIL_TEST_CASE(cpp_test_xml_new_pi) {
72+
fossil::media::Xml node = fossil::media::Xml::new_pi("xml-stylesheet", "type=\"text/xsl\" href=\"style.xsl\"");
73+
ASSUME_NOT_CNULL(node.get());
74+
ASSUME_ITS_EQUAL_CSTR(node.get()->name, "xml-stylesheet");
75+
ASSUME_ITS_EQUAL_CSTR(node.get()->content, "type=\"text/xsl\" href=\"style.xsl\"");
76+
ASSUME_ITS_EQUAL_CSTR(node.type_name(), "pi");
77+
}
78+
79+
FOSSIL_TEST_CASE(cpp_test_xml_append_child_and_first_child) {
80+
fossil::media::Xml parent = fossil::media::Xml::new_element("parent");
81+
fossil::media::Xml child = fossil::media::Xml::new_element("child");
82+
parent.append_child(std::move(child));
83+
fossil::media::Xml first = parent.first_child();
84+
ASSUME_NOT_CNULL(first.get());
85+
ASSUME_ITS_EQUAL_CSTR(first.get()->name, "child");
86+
}
87+
88+
FOSSIL_TEST_CASE(cpp_test_xml_set_and_get_attribute) {
89+
fossil::media::Xml node = fossil::media::Xml::new_element("item");
90+
node.set_attribute("id", "42");
91+
const char *val = node.get_attribute("id");
92+
ASSUME_NOT_CNULL(val);
93+
ASSUME_ITS_EQUAL_CSTR(val, "42");
94+
}
95+
96+
FOSSIL_TEST_CASE(cpp_test_xml_set_attribute_replace) {
97+
fossil::media::Xml node = fossil::media::Xml::new_element("item");
98+
node.set_attribute("id", "42");
99+
node.set_attribute("id", "43");
100+
const char *val = node.get_attribute("id");
101+
ASSUME_NOT_CNULL(val);
102+
ASSUME_ITS_EQUAL_CSTR(val, "43");
103+
}
104+
105+
FOSSIL_TEST_CASE(cpp_test_xml_stringify_simple) {
106+
fossil::media::Xml node = fossil::media::Xml::new_element("root");
107+
node.set_attribute("foo", "bar");
108+
std::string xml = node.stringify(false);
109+
ASSUME_ITS_TRUE(xml.find("<root foo=\"bar\"/>") != std::string::npos);
110+
}
111+
112+
FOSSIL_TEST_CASE(cpp_test_xml_stringify_pretty) {
113+
fossil::media::Xml root = fossil::media::Xml::new_element("root");
114+
fossil::media::Xml child = fossil::media::Xml::new_element("child");
115+
root.append_child(std::move(child));
116+
std::string xml = root.stringify(true);
117+
ASSUME_ITS_TRUE(xml.find("<root>") != std::string::npos);
118+
ASSUME_ITS_TRUE(xml.find("<child/>") != std::string::npos);
119+
}
120+
121+
FOSSIL_TEST_CASE(cpp_test_xml_parse_dummy) {
122+
const char *xml = "<foo>bar</foo>";
123+
fossil::media::Xml node(xml);
124+
ASSUME_NOT_CNULL(node.get());
125+
ASSUME_ITS_EQUAL_CSTR(node.get()->name, "root"); // Dummy parser returns "root"
126+
}
127+
128+
FOSSIL_TEST_CASE(cpp_test_xml_type_name) {
129+
fossil::media::Xml elem = fossil::media::Xml::new_element("e");
130+
fossil::media::Xml txt = fossil::media::Xml::new_text("t");
131+
fossil::media::Xml com = fossil::media::Xml::new_comment("c");
132+
fossil::media::Xml pi = fossil::media::Xml::new_pi("p", "d");
133+
fossil::media::Xml cdata = fossil::media::Xml::new_cdata("cd");
134+
ASSUME_ITS_EQUAL_CSTR(elem.type_name(), "element");
135+
ASSUME_ITS_EQUAL_CSTR(txt.type_name(), "text");
136+
ASSUME_ITS_EQUAL_CSTR(com.type_name(), "comment");
137+
ASSUME_ITS_EQUAL_CSTR(pi.type_name(), "pi");
138+
ASSUME_ITS_EQUAL_CSTR(cdata.type_name(), "cdata");
139+
}
140+
141+
// * * * * * * * * * * * * * * * * * * * * * * * *
142+
// * Fossil Logic Test Pool
143+
// * * * * * * * * * * * * * * * * * * * * * * * *
144+
FOSSIL_TEST_GROUP(cpp_xml_tests) {
145+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_new_element);
146+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_new_text);
147+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_new_comment);
148+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_new_cdata);
149+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_new_pi);
150+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_append_child_and_first_child);
151+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_set_and_get_attribute);
152+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_set_attribute_replace);
153+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_stringify_simple);
154+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_stringify_pretty);
155+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_parse_dummy);
156+
FOSSIL_TEST_ADD(cpp_xml_fixture, cpp_test_xml_type_name);
157+
158+
FOSSIL_TEST_REGISTER(cpp_xml_fixture);
159+
} // end of tests

0 commit comments

Comments
 (0)