File tree Expand file tree Collapse file tree 2 files changed +67
-0
lines changed
scala-core-modules/scala-core/src
main/scala-3/com/baeldung/scala/patternmatching
test/scala-3/com/baeldung/scala/patternmatching Expand file tree Collapse file tree 2 files changed +67
-0
lines changed Original file line number Diff line number Diff line change 1+ package com .baeldung .scala .patternmatching
2+
3+ sealed trait Command
4+ case object Start extends Command
5+ case object Stop extends Command
6+ case object Report extends Command
7+ case class CustomCommand (cmd : String ) extends Command
8+
9+ def executeCommand (command : Command ): String = command match {
10+ case Start | CustomCommand (" begin" ) =>
11+ " System Starting."
12+ case Stop | CustomCommand (" halt" ) =>
13+ " System Stopping."
14+ case Report | CustomCommand (" status" ) =>
15+ " Generating Report."
16+ case _ =>
17+ " Unknown Command."
18+ }
19+
20+ def httpResponse (response : Int ): String = response match {
21+ case 200 | 201 | 202 => " Success"
22+ case 400 | 404 | 500 => " Error"
23+ case _ => " Unknown status"
24+ }
25+
26+ def multipleTypePatterns (obj : Any ): String = obj match {
27+ case _ : String | _ : Int => " It's either a String or an Int"
28+ case _ => " It's something else"
29+ }
30+
31+ def unionTypePattern (obj : Any ): String = obj match {
32+ case _ : (String | Int ) => " It's either a String or an Int"
33+ case _ => " It's something else"
34+ }
Original file line number Diff line number Diff line change 1+ package com .baeldung .scala .patternmatching
2+
3+ import org .scalatest .flatspec .AnyFlatSpec
4+ import org .scalatest .matchers .should .Matchers
5+
6+ class MultipleMatchesUnitTest extends AnyFlatSpec with Matchers {
7+
8+ " executeCommand" should " start the system when given the command" in {
9+ val result = executeCommand(Start )
10+ result shouldEqual " System Starting."
11+ }
12+
13+ it should " stop the system when given the command" in {
14+ val result = executeCommand(CustomCommand (" halt" ))
15+ result shouldEqual " System Stopping."
16+ }
17+
18+ " httpResponse" should " Error" in {
19+ val result = httpResponse(404 )
20+ result shouldEqual " Error"
21+ }
22+
23+ " multipleTypePatterns" should " Error" in {
24+ val result = multipleTypePatterns(4.4 )
25+ result shouldEqual " It's something else"
26+ }
27+
28+ " unionTypePattern" should " Error" in {
29+ val result = unionTypePattern(42 )
30+ result shouldEqual " It's either a String or an Int"
31+ }
32+
33+ }
You can’t perform that action at this time.
0 commit comments