Skip to content

Commit df7d18e

Browse files
committed
Add further tests of NodeSeq
1 parent e723935 commit df7d18e

File tree

1 file changed

+80
-0
lines changed

1 file changed

+80
-0
lines changed

shared/src/test/scala/scala/xml/NodeSeqTest.scala

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,84 @@ class NodeSeqTest {
2020
val exp = NodeSeq.fromSeq(Seq(<a>Hello</a>, <b>Hi</b>))
2121
assertEquals(exp, res)
2222
}
23+
24+
@Test
25+
def testAppendedAll: Unit = { // Bug #392.
26+
val a: NodeSeq = <a>Hello</a>
27+
val b = <b>Hi</b>
28+
a :+ <b>Hi</b> match {
29+
case res: Seq[Node] => assertEquals(2, res.size)
30+
case res: NodeSeq => fail("Should be Seq[Node]") // Unreachable code?
31+
}
32+
val res: NodeSeq = a :+ b
33+
val exp = NodeSeq.fromSeq(Seq(<a>Hello</a>, <b>Hi</b>))
34+
assertEquals(exp, res)
35+
}
36+
37+
@Test
38+
def testPrepended: Unit = {
39+
val a: NodeSeq = <a>Hello</a>
40+
val b = <b>Hi</b>
41+
a +: <b>Hi</b> match {
42+
case res: Seq[NodeSeq] => assertEquals(2, res.size)
43+
case res: NodeSeq => fail("Should be NodeSeq was Seq[Node]") // Unreachable code?
44+
}
45+
val res: Seq[NodeSeq] = a +: b
46+
val exp = <a>Hello</a><b>Hi</b>
47+
assertEquals(exp, res)
48+
}
49+
50+
@Test
51+
def testPrependedAll: Unit = {
52+
val a: NodeSeq = <a>Hello</a>
53+
val b = <b>Hi</b>
54+
val c = <c>Hey</c>
55+
a ++: <b>Hi</b> ++: <c>Hey</c> match {
56+
case res: Seq[Node] => assertEquals(3, res.size)
57+
case res: NodeSeq => fail("Should be Seq[Node]") // Unreachable code?
58+
}
59+
val res: NodeSeq = a ++: b ++: c
60+
val exp = NodeSeq.fromSeq(Seq(<a>Hello</a>, <b>Hi</b>, <c>Hey</c>))
61+
assertEquals(exp, res)
62+
}
63+
64+
@Test
65+
def testMap: Unit = {
66+
val a: NodeSeq = <a>Hello</a>
67+
val exp: NodeSeq = Seq(<b>Hi</b>)
68+
assertEquals(exp, a.map(_ => <b>Hi</b>))
69+
assertEquals(exp, for { _ <- a } yield { <b>Hi</b> })
70+
}
71+
72+
@Test
73+
def testFlatMap: Unit = {
74+
val a: NodeSeq = <a>Hello</a>
75+
val exp: NodeSeq = Seq(<b>Hi</b>)
76+
assertEquals(exp, a.flatMap(_ => Seq(<b>Hi</b>)))
77+
assertEquals(exp, for { b <- a; _ <- b } yield { <b>Hi</b> })
78+
assertEquals(exp, for { b <- a; c <- b; _ <- c } yield { <b>Hi</b> })
79+
}
80+
81+
@Test
82+
def testStringProjection: Unit = {
83+
val a =
84+
<a>
85+
<b>b</b>
86+
<b>
87+
<c d="d">
88+
<e>e</e>
89+
<e>e</e>
90+
</c>
91+
<c>c</c>
92+
</b>
93+
</a>
94+
val res = for {
95+
b <- a \ "b"
96+
c <- b.child
97+
e <- (c \ "e").headOption
98+
} yield {
99+
e.text.trim
100+
}
101+
assertEquals(Seq("e"), res)
102+
}
23103
}

0 commit comments

Comments
 (0)