@@ -14,6 +14,7 @@ object NumberStatements {
1414 override val failureMessage: String
1515 get() = " The subject is less than or equal to $value "
1616 }
17+
1718 fun <T : Number > isAtMost (value : T ) = object : Statement <T > {
1819 override fun evaluate (subject : T ): Boolean {
1920 return subject.toDouble() <= value.toDouble()
@@ -22,4 +23,49 @@ object NumberStatements {
2223 override val failureMessage: String
2324 get() = " The subject is greater than $value "
2425 }
26+
27+ fun <T : Number > isLessThan (other : T ) = object : Statement <T > {
28+ override val failureMessage: String
29+ get() = " The subject is greater than or equal to $other ."
30+
31+ override fun evaluate (subject : T ): Boolean {
32+ return subject.toDouble() < other.toDouble()
33+ }
34+ }
35+
36+ fun <T : Number > isAtLeast (value : T ) = object : Statement <T > {
37+ override fun evaluate (subject : T ): Boolean {
38+ return subject.toDouble() >= value.toDouble()
39+ }
40+
41+ override val failureMessage: String
42+ get() = " The subject is less than $value "
43+ }
44+
45+ fun isEven () = object : Statement <Int > {
46+ override val failureMessage: String
47+ get() = " Subject is not even."
48+
49+ override fun evaluate (subject : Int ): Boolean {
50+ return subject % 2 == 0
51+ }
52+ }
53+
54+ fun isOdd () = object : Statement <Int > {
55+ override val failureMessage: String
56+ get() = " Subject is not odd."
57+
58+ override fun evaluate (subject : Int ): Boolean {
59+ return subject % 2 != 0
60+ }
61+ }
62+
63+ fun isDividedBy (divisor : Int ) = object : Statement <Int > {
64+ override val failureMessage: String
65+ get() = " Subject is not evenly divided by $divisor ."
66+
67+ override fun evaluate (subject : Int ): Boolean {
68+ return subject % divisor == 0
69+ }
70+ }
2571}
0 commit comments