diff --git a/CalciumCommon/src/commonMain/kotlin/com/romanpodymov/kmm/shared/CalciumEnums.kt b/CalciumCommon/src/commonMain/kotlin/com/romanpodymov/kmm/shared/CalciumEnums.kt index 809aabc..2f385db 100644 --- a/CalciumCommon/src/commonMain/kotlin/com/romanpodymov/kmm/shared/CalciumEnums.kt +++ b/CalciumCommon/src/commonMain/kotlin/com/romanpodymov/kmm/shared/CalciumEnums.kt @@ -29,35 +29,35 @@ enum class Digit(val value: Int) { enum class Operation { PLUS { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal { - return BigDecimal.parseString(lhs) + BigDecimal.parseString(rhs) + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal { + return lhs + rhs } }, MINUS { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal { - return BigDecimal.parseString(lhs) - BigDecimal.parseString(rhs) + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal { + return lhs - rhs } }, MULTIPLY { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal { - return BigDecimal.parseString(lhs) * BigDecimal.parseString(rhs) + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal { + return lhs * rhs } }, DIVIDE { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal { - return BigDecimal.parseString(lhs) / BigDecimal.parseString(rhs) + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal { + return lhs / rhs } }, FACTORIAL { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal { + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal { return BigDecimal.ZERO } }, EQUALS { - override fun calculateValueKMM(lhs: String, rhs: String): BigDecimal = BigDecimal.ZERO + override fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal = BigDecimal.ZERO }; - abstract fun calculateValueKMM(lhs: String, rhs: String): BigDecimal + internal abstract fun calculateValueKMM(lhs: BigDecimal, rhs: BigDecimal): BigDecimal } sealed class CalculatorButton { @@ -72,6 +72,9 @@ interface Calculator { class KMMCalculator: Calculator { override fun calculateValue(lhs: String, rhs: String, operation: Operation): String { - return operation.calculateValueKMM(lhs, rhs).toPlainString() + return operation.calculateValueKMM( + BigDecimal.parseString(lhs), + BigDecimal.parseString(rhs) + ).toPlainString() } } \ No newline at end of file diff --git a/CalciumCommon/src/commonTest/kotlin/com/romanpodymov/kmm/shared/CalciumEnumsTests.kt b/CalciumCommon/src/commonTest/kotlin/com/romanpodymov/kmm/shared/CalciumEnumsTests.kt index 5732a3a..36c5949 100644 --- a/CalciumCommon/src/commonTest/kotlin/com/romanpodymov/kmm/shared/CalciumEnumsTests.kt +++ b/CalciumCommon/src/commonTest/kotlin/com/romanpodymov/kmm/shared/CalciumEnumsTests.kt @@ -27,7 +27,7 @@ class CalciumEnumsTests { fun calculateValuesTest() { assertTrue { val operation = Operation.PLUS - operation.calculateValueKMM(BigDecimal.ONE.toPlainString(), BigDecimal.TWO.toPlainString()) == "3".toBigDecimal() + operation.calculateValueKMM(BigDecimal.ONE, BigDecimal.TWO) == "3".toBigDecimal() } } } \ No newline at end of file diff --git a/project.yml b/project.yml index 734f351..977a596 100644 --- a/project.yml +++ b/project.yml @@ -10,7 +10,7 @@ packages: version: 1.12.1 BigNumber: url: https://github.com/mkrd/Swift-BigInt - version: 2.3.0 + branch: master Resolver: url: https://github.com/hmlongco/Resolver version: 1.5.1