1
+ package com.memoizr.assertk
2
+
3
+ import org.assertj.core.api.AbstractDoubleAssert
4
+ import org.assertj.core.api.Assertions
5
+
6
+ class DoubleAssert internal constructor(
7
+ subjectUnderTest : Double? ,
8
+ override val assertion : AbstractDoubleAssert <* > = Assertions .assertThat(subjectUnderTest)) :
9
+ AbstractAssertBuilder <DoubleAssert , Double >(subjectUnderTest, DoubleAssert ::class .java) {
10
+
11
+ infix fun isLessThan (expected : Double ): DoubleAssert {
12
+ assertion.isLessThan(expected)
13
+ return this
14
+ }
15
+
16
+ infix fun isLessThanOrEqualTo (expected : Double ): DoubleAssert {
17
+ assertion.isLessThanOrEqualTo(expected)
18
+ return this
19
+ }
20
+
21
+ infix fun isGreaterThan (expected : Double ): DoubleAssert {
22
+ assertion.isGreaterThan(expected)
23
+ return this
24
+ }
25
+
26
+ infix fun isGreaterThanOrEqualTo (expected : Double ): DoubleAssert {
27
+ assertion.isGreaterThanOrEqualTo(expected)
28
+ return this
29
+ }
30
+
31
+ infix fun isBetween (expected : ClosedRange <Double >): DoubleAssert {
32
+ assertion.isBetween(expected.start, expected.endInclusive)
33
+ return this
34
+ }
35
+
36
+ infix fun isStrictlyBetween (expected : ClosedRange <Double >): DoubleAssert {
37
+ assertion.isStrictlyBetween(expected.start, expected.endInclusive)
38
+ return this
39
+ }
40
+
41
+ infix fun isCloseTo (expected : Double ): Close {
42
+ return Close (expected, assertion, this )
43
+ }
44
+
45
+ infix fun _is (expected : NumberSelector ): DoubleAssert {
46
+ when (expected) {
47
+ zero -> assertion.isZero()
48
+ notZero -> assertion.isNotZero()
49
+ positive -> assertion.isPositive()
50
+ notPositive -> assertion.isNotPositive()
51
+ negative -> assertion.isNegative()
52
+ notNegative -> assertion.isNotNegative()
53
+ }
54
+ return this
55
+ }
56
+
57
+ class Close (private val actual : Double , private val assertion : AbstractDoubleAssert <* >, private val assert : DoubleAssert ) {
58
+ infix fun withinOffset (expected : Double ): DoubleAssert {
59
+ assertion.isCloseTo(actual, Assertions .within(expected))
60
+ return assert
61
+ }
62
+
63
+ infix fun withinPercentage (expected : Number ): DoubleAssert {
64
+ assertion.isCloseTo(actual, Assertions .withinPercentage(expected.toDouble()))
65
+ return assert
66
+ }
67
+ }
68
+ }
0 commit comments