@@ -6,6 +6,7 @@ import org.junit.Test
6
6
import org .junit .Assert ._
7
7
8
8
import scala .collection .Iterator
9
+ import scala .collection .mutable .ListBuffer
9
10
import scala .ref .WeakReference
10
11
import scala .util .Try
11
12
@@ -358,6 +359,15 @@ class LazyListTest {
358
359
assertLazyHeadWhenNextHeadEvaluated(op)
359
360
}
360
361
362
+ @ Test
363
+ def tapEach_properlyLazy (): Unit = {
364
+ val op = lazyListOp(_.tapEach(_ + 1 ))
365
+ assertRepeatedlyFullyLazy(op)
366
+ assertLazyTailWhenHeadEvaluated(op)
367
+ assertLazyHeadWhenTailEvaluated(op)
368
+ assertLazyHeadWhenNextHeadEvaluated(op)
369
+ }
370
+
361
371
@ Test
362
372
def collect_properlyLazy (): Unit = {
363
373
val op = lazyListOp(_ collect { case i if i % 2 != 0 => i})
@@ -1000,4 +1010,24 @@ class LazyListTest {
1000
1010
assertEquals(s " mkString 3 $i" , goal(3 ,i), precyc(3 ,i).mkString)
1001
1011
}
1002
1012
}
1013
+ @ Test
1014
+ def tapEach : Unit = {
1015
+
1016
+ /** @param makeLL must make a lazylist that evaluates to Seq(1,2,3,4,5) */
1017
+ def check (makeLL : => LazyList [Int ]): Unit = {
1018
+ val lb = ListBuffer [Int ]()
1019
+ val ll = makeLL.tapEach(lb += _)
1020
+ assertEquals(ListBuffer [Int ](), lb)
1021
+ assertEquals(Vector (1 , 2 ), ll.take(2 ).to(Vector ))
1022
+ assertEquals(ListBuffer (1 , 2 ), lb)
1023
+ assertEquals(4 , ll(3 ))
1024
+ assertEquals(ListBuffer (1 , 2 , 4 ), lb)
1025
+ assertEquals(Vector (1 ,2 ,3 ,4 ,5 ), ll.to(Vector ))
1026
+ assertEquals(ListBuffer (1 , 2 , 4 , 3 , 5 ), lb)
1027
+ }
1028
+
1029
+ check(LazyList .from(Iterator (1 , 2 , 3 , 4 , 5 )))
1030
+ check(LazyList .from(Vector (1 , 2 , 3 , 4 , 5 )))
1031
+ check(LazyList .tabulate(5 )(_ + 1 ))
1032
+ }
1003
1033
}
0 commit comments