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
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"))
119
119
libraryDependencies += " org.scalatestplus" %% " scalacheck-1-17" % " 3.2.18.0" % Test
120
120
)
121
121
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
+
122
130
lazy val scala_core_numbers =
123
131
(project in file(" scala-core-modules/scala-core-numbers" ))
124
132
.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