1+ package org .json .junit ;
2+
3+ import org .json .XMLTokener ;
4+ import org .junit .Test ;
5+
6+ import java .io .StringReader ;
7+
8+ import static org .junit .Assert .*;
9+
10+ /**
11+ * Tests for JSON-Java XMLTokener.java
12+ */
13+ public class XMLTokenerTest {
14+
15+ /**
16+ * Tests that nextCDATA() correctly extracts content from within a CDATA section.
17+ */
18+ @ Test
19+ public void testNextCDATA () {
20+ String xml = "This is <![CDATA[ some <CDATA> content ]]> after" ;
21+ XMLTokener tokener = new XMLTokener (new StringReader (xml ));
22+ tokener .skipPast ("<![CDATA[" );
23+ String cdata = tokener .nextCDATA ();
24+ assertEquals (" some <CDATA> content " , cdata );
25+ }
26+
27+ /**
28+ * Tests that nextContent() returns plain text content before a tag.
29+ */
30+ @ Test
31+ public void testNextContentWithText () {
32+ String xml = "Some content<nextTag>" ;
33+ XMLTokener tokener = new XMLTokener (xml );
34+ Object content = tokener .nextContent ();
35+ assertEquals ("Some content" , content );
36+ }
37+
38+ /**
39+ * Tests that nextContent() returns '<' character when starting with a tag.
40+ */
41+ @ Test
42+ public void testNextContentWithTag () {
43+ String xml = "<tag>" ;
44+ XMLTokener tokener = new XMLTokener (xml );
45+ Object content = tokener .nextContent ();
46+ assertEquals ('<' , content );
47+ }
48+
49+ /**
50+ * Tests that nextEntity() resolves a known entity like & correctly.
51+ */
52+ @ Test
53+ public void testNextEntityKnown () {
54+ XMLTokener tokener = new XMLTokener ("amp;" );
55+ Object result = tokener .nextEntity ('&' );
56+ assertEquals ("&" , result );
57+ }
58+
59+ /**
60+ * Tests that nextEntity() preserves unknown entities by returning them unchanged.
61+ */
62+ @ Test
63+ public void testNextEntityUnknown () {
64+ XMLTokener tokener = new XMLTokener ("unknown;" );
65+ tokener .next (); // skip 'u'
66+ Object result = tokener .nextEntity ('&' );
67+ assertEquals ("&nknown;" , result ); // malformed start to simulate unknown
68+ }
69+
70+ /**
71+ * Tests skipPast() to ensure the cursor moves past the specified string.
72+ */
73+ @ Test
74+ public void testSkipPast () {
75+ String xml = "Ignore this... endHere more text" ;
76+ XMLTokener tokener = new XMLTokener (xml );
77+ tokener .skipPast ("endHere" );
78+ assertEquals (' ' , tokener .next ()); // should be the space after "endHere"
79+ }
80+
81+ }
0 commit comments