Skip to content

Commit 2ebeeff

Browse files
committed
SCALA-724: Code companion for the article.
1 parent a33d838 commit 2ebeeff

File tree

2 files changed

+46
-0
lines changed

2 files changed

+46
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
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 numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.baeldung.scala.patternmatching
2+
3+
import org.scalatest.flatspec.AnyFlatSpec
4+
5+
class MultipleMatchesUnitTest extends AnyFlatSpec {
6+
7+
"executeCommand" should "start the system when given the command" in {
8+
val result = executeCommand(Start)
9+
assert("" == result)
10+
}
11+
12+
}

0 commit comments

Comments
 (0)