File tree Expand file tree Collapse file tree 4 files changed +88
-0
lines changed
scala-core-modules/scala-core-10
main/scala/com/baeldung/scala/valsintraits
test/scala/com/baeldung/scala Expand file tree Collapse file tree 4 files changed +88
-0
lines changed Original file line number Diff line number Diff line change @@ -119,6 +119,14 @@ lazy val scala_core_9 = (project in file("scala-core-modules/scala-core-9"))
119119 libraryDependencies += " org.scalatestplus" %% " scalacheck-1-17" % " 3.2.18.0" % Test
120120 )
121121
122+ lazy val scala_core_10 = (project in file(" scala-core-modules/scala-core-10" ))
123+ .settings(
124+ name := " scala-core-10" ,
125+ libraryDependencies ++= scalaTestDeps,
126+ scalaVersion := scala3Version,
127+ libraryDependencies += " org.scalatestplus" %% " scalacheck-1-17" % " 3.2.18.0" % Test
128+ )
129+
122130lazy val scala_core_numbers =
123131 (project in file(" scala-core-modules/scala-core-numbers" ))
124132 .settings(
Original file line number Diff line number Diff line change 1+ ### Relevant Articles
Original file line number Diff line number Diff line change 1+ package com .baeldung .scala .valsintraits
2+
3+ import java .time .LocalDateTime
4+
5+ object ValInTraitExamples {
6+ trait CurrentTimePrinter {
7+ val currentTime : LocalDateTime
8+ def printCurrentTime (): Unit
9+ }
10+ object TimePrinterImpl extends CurrentTimePrinter {
11+ override val currentTime : LocalDateTime = LocalDateTime .now()
12+ override def printCurrentTime (): Unit = println(currentTime)
13+ }
14+
15+ trait CurrentTimePrinterWithDef {
16+ def currentTime : LocalDateTime
17+ def printCurrentTime (): Unit
18+ }
19+ object TimePrinterWithDefImpl extends CurrentTimePrinterWithDef {
20+ override def currentTime : LocalDateTime = LocalDateTime .now()
21+ override def printCurrentTime (): Unit = println(currentTime)
22+ }
23+
24+ trait TraitA {
25+ val multiplier : Int
26+ val result : Int = multiplier * 7
27+ }
28+ trait TraitB {
29+ val multiplier : Int = 10
30+ }
31+ trait TraitAWithDef {
32+ val multiplier : Int
33+ def result : Int = multiplier * 7
34+ }
35+
36+ object AB extends TraitA with TraitB
37+ object BA extends TraitB with TraitA
38+ object ABWithDef extends TraitAWithDef with TraitB
39+ }
Original file line number Diff line number Diff line change 1+ package com .baeldung .scala
2+
3+ import com .baeldung .scala .valsintraits .ValInTraitExamples
4+ import org .scalatest .flatspec .AnyFlatSpec
5+ import org .scalatest .matchers .should .Matchers
6+
7+ class ValInTraitExamplesUnitTest extends AnyFlatSpec with Matchers {
8+ " TimePrinterImpl" should " return same time every call" in {
9+ val printer = ValInTraitExamples .TimePrinterImpl
10+ val first = printer.currentTime
11+ Thread .sleep(10 )
12+ val second = printer.currentTime
13+
14+ first.shouldBe(second)
15+ }
16+
17+ " TimePrinterWithDefImpl" should " return different time every call" in {
18+ val printer = ValInTraitExamples .TimePrinterWithDefImpl
19+ val first = printer.currentTime
20+ Thread .sleep(10 )
21+ val second = printer.currentTime
22+
23+ first should not be second
24+ }
25+
26+ " ClassAB" should " return result as 0" in {
27+ val classAb = ValInTraitExamples .AB
28+ classAb.result shouldBe 0
29+ }
30+
31+ " ClassBA" should " return result as 70" in {
32+ val classBa = ValInTraitExamples .BA
33+ classBa.result shouldBe 70
34+ }
35+
36+ " ClassABWithDef" should " return result as 70" in {
37+ val classAbWithDef = ValInTraitExamples .ABWithDef
38+ classAbWithDef.result shouldBe 70
39+ }
40+ }
You can’t perform that action at this time.
0 commit comments