@@ -20,4 +20,84 @@ class NodeSeqTest {
20
20
val exp = NodeSeq .fromSeq(Seq (<a >Hello </a >, <b >Hi </b >))
21
21
assertEquals(exp, res)
22
22
}
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
+ }
23
103
}
0 commit comments