@@ -2,19 +2,19 @@ package scala.xml
2
2
package pull
3
3
4
4
import org .junit .Test
5
- import org .junit .Ignore
6
- import org .junit .runner .RunWith
7
- import org .junit .runners .JUnit4
8
- import org .junit .Assert .assertTrue
9
- import org .junit .Assert .assertFalse
10
- import org .junit .Assert .assertEquals
5
+ import org .junit .Assert .{assertFalse , assertTrue }
11
6
12
7
import scala .io .Source
13
8
14
9
class XMLEventReaderTest {
15
10
16
11
val src = Source .fromString(" <hello><world/>!</hello>" )
17
12
13
+ private def toSource (s : String ) = new Source {
14
+ val iter = s.iterator
15
+ override def reportError (pos : Int , msg : String , out : java.io.PrintStream = Console .err) {}
16
+ }
17
+
18
18
@ Test
19
19
def pull : Unit = {
20
20
val er = new XMLEventReader (src)
@@ -44,17 +44,110 @@ class XMLEventReaderTest {
44
44
@ Test
45
45
def issue35 : Unit = {
46
46
val broken = " <broken attribute='is truncated"
47
- val x = new Source {
48
- val iter = broken.iterator
49
- override def reportError (pos : Int , msg : String , out : java.io.PrintStream = Console .err) {}
50
- }
51
- val r = new XMLEventReader (x)
47
+ val r = new XMLEventReader (toSource(broken))
48
+
49
+ assertTrue(r.next.isInstanceOf [EvElemStart ])
50
+ }
51
+
52
+ @ Test
53
+ def malformedCDATA : Unit = {
54
+ val data = " <broken><![CDATA[A"
55
+ val r = new XMLEventReader (toSource(data))
56
+
57
+ assertTrue(r.next.isInstanceOf [EvElemStart ])
58
+ }
59
+
60
+ @ Test
61
+ def malformedComment1 : Unit = {
62
+ val data = " <broken><!"
63
+ val r = new XMLEventReader (toSource(data))
64
+
52
65
assertTrue(r.next.isInstanceOf [EvElemStart ])
53
66
}
54
67
55
- @ Test (expected = classOf [Exception ])
56
- def missingTagTest : Unit = {
57
- val data =
68
+ @ Test
69
+ def malformedComment2 : Unit = {
70
+ val data = " <broken><!-- comment "
71
+ val r = new XMLEventReader (toSource(data))
72
+
73
+ assertTrue(r.next.isInstanceOf [EvElemStart ])
74
+ }
75
+
76
+ @ Test
77
+ def malformedDTD1 : Unit = {
78
+ // broken ELEMENT
79
+ val data =
80
+ """ <?xml version="1.0" encoding="utf-8"?>
81
+ |<!DOCTYPE broken [
82
+ | <!ELE
83
+ """ .stripMargin
84
+ val r = new XMLEventReader (toSource(data))
85
+
86
+ assertFalse(r.hasNext)
87
+ }
88
+
89
+ @ Test
90
+ def malformedDTD2 : Unit = {
91
+ val data =
92
+ """ <!DOCTYPE broken [
93
+ | <!ELEMENT data (#PCDATA)>
94
+ """ .stripMargin
95
+ val r = new XMLEventReader (toSource(data))
96
+
97
+ assertFalse(r.hasNext)
98
+ }
99
+
100
+ @ Test
101
+ def malformedDTD3 : Unit = {
102
+ // broken ATTLIST
103
+ val data =
104
+ """ <!DOCTYPE broken [
105
+ | <!ATTL
106
+ """ .stripMargin
107
+ val r = new XMLEventReader (toSource(data))
108
+
109
+ assertFalse(r.hasNext)
110
+ }
111
+
112
+ @ Test
113
+ def malformedDTD4 : Unit = {
114
+ // unexpected declaration
115
+ val data =
116
+ """ <!DOCTYPE broken [
117
+ | <!UNEXPECTED
118
+ """ .stripMargin
119
+ val r = new XMLEventReader (toSource(data))
120
+
121
+ assertFalse(r.hasNext)
122
+ }
123
+
124
+ @ Test
125
+ def malformedDTD5 : Unit = {
126
+ val data =
127
+ """ <!DOCTYPE broken [
128
+ | <!ENTITY % foo 'INCLUDE'>
129
+ | <![%foo;[
130
+ """ .stripMargin
131
+ val r = new XMLEventReader (toSource(data))
132
+
133
+ assertFalse(r.hasNext)
134
+ }
135
+
136
+ @ Test
137
+ def malformedDTD6 : Unit = {
138
+ val data =
139
+ """ <!DOCTYPE broken [
140
+ | <!ENTITY % foo 'IGNORE'>
141
+ | <![%foo;[
142
+ """ .stripMargin
143
+ val r = new XMLEventReader (toSource(data))
144
+
145
+ assertFalse(r.hasNext)
146
+ }
147
+
148
+ @ Test (expected = classOf [Exception ])
149
+ def missingTagTest : Unit = {
150
+ val data =
58
151
""" <?xml version="1.0" ?>
59
152
|<verbosegc xmlns="http://www.ibm.com/j9/verbosegc">
60
153
|
@@ -66,8 +159,8 @@ class XMLEventReaderTest {
66
159
|</exclusive-start>
67
160
|""" .stripMargin
68
161
69
- val er = new XMLEventReader (Source .fromString (data))
70
- while (er.hasNext) er.next()
71
- er.stop()
72
- }
162
+ val er = new XMLEventReader (toSource (data))
163
+ while (er.hasNext) er.next()
164
+ er.stop()
165
+ }
73
166
}
0 commit comments