@@ -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