Skip to content

Commit 87b70bd

Browse files
Merge pull request #1337 from yadavan88/filter-takeWhile
Code sample for filter and takeWhile method differences
2 parents df1fd61 + 295dd0c commit 87b70bd

File tree

3 files changed

+56
-0
lines changed

3 files changed

+56
-0
lines changed

build.sbt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,13 @@ lazy val scala_core_collections_3 =
208208
libraryDependencies ++= scalaTestDeps
209209
)
210210

211+
lazy val scala_core_collections_4 =
212+
(project in file("scala-core-collections-modules/scala-core-collections-4"))
213+
.settings(
214+
scalaVersion := scala3Version,
215+
libraryDependencies ++= scalaTestDeps
216+
)
217+
211218
lazy val scala_core_map =
212219
(project in file("scala-core-collections-modules/scala-core-map"))
213220
.settings(
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## Relevant Articles
2+
3+
-
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.baeldung.scala.filtertakewhile
2+
3+
import org.scalatest.matchers.should.Matchers
4+
import org.scalatest.wordspec.AnyWordSpec
5+
6+
import java.time.{LocalDate, LocalDateTime}
7+
import scala.concurrent.{Await, Future, TimeoutException}
8+
import scala.concurrent.ExecutionContext.Implicits.global
9+
import scala.concurrent.duration.*
10+
11+
class FilterAndTakeWhileUnitTest extends AnyWordSpec with Matchers {
12+
13+
"filter" should {
14+
"filter all elements matching the condition" in {
15+
val numbers = List(1, 2, 3, 4, 5, 6)
16+
val oddNumbers = numbers.filter(_ % 2 != 0)
17+
oddNumbers shouldBe List(1, 3, 5)
18+
}
19+
20+
"not complete the execution due to infinite collection" ignore {
21+
val infiniteNumbers = LazyList.from(1)
22+
val lessThan100 =
23+
infiniteNumbers.filter(_ < 100).toList // never completes
24+
}
25+
}
26+
27+
"takeWhile" should {
28+
"select elements until the predicate fails" in {
29+
val numbers = List(1, 2, 3, 4, 5, 6)
30+
val numbersBeforeFirstEven = numbers.takeWhile(_ % 2 != 0)
31+
numbersBeforeFirstEven shouldBe List(1)
32+
}
33+
34+
"select different list of elements if the list item changes" in {
35+
val numbers = List(1, 3, 4, 5, 6)
36+
val numbersBeforeFirstEven = numbers.takeWhile(_ % 2 != 0)
37+
numbersBeforeFirstEven shouldBe List(1, 3)
38+
}
39+
40+
"successfully get result from an infinite collection" in {
41+
val infiniteNumbers = LazyList.from(1)
42+
val first100 = infiniteNumbers.takeWhile(_ < 100).toList
43+
first100 shouldBe (1 to 99).toList
44+
}
45+
}
46+
}

0 commit comments

Comments
 (0)