Skip to content
This repository has been archived by the owner on Nov 3, 2024. It is now read-only.

Commit

Permalink
Optimisation
Browse files Browse the repository at this point in the history
  • Loading branch information
RomanPodymov committed Jul 27, 2024
1 parent 2eecab8 commit 185d745
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -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()
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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()
}
}
}
2 changes: 1 addition & 1 deletion project.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 185d745

Please sign in to comment.