241 lines
No EOL
8.9 KiB
Kotlin
241 lines
No EOL
8.9 KiB
Kotlin
import org.junit.jupiter.api.Assertions.assertEquals
|
|
import org.junit.jupiter.api.Assertions.assertThrows
|
|
import org.junit.jupiter.api.Test
|
|
|
|
class MoneyTest {
|
|
@Test
|
|
fun `Valid Money`() {
|
|
Money(123)
|
|
Money.fromDollarsAndCents(5, 67)
|
|
}
|
|
|
|
@Test
|
|
fun `Invalid Money`() {
|
|
assertThrows(IllegalArgumentException::class.java, { Money.fromDollarsAndCents(5, 100) })
|
|
assertThrows(IllegalArgumentException::class.java, { Money.fromDollarsAndCents(3, -1) })
|
|
}
|
|
|
|
@Test
|
|
fun `Standard Addition`() {
|
|
val expectedResult = Money(150)
|
|
val actualResult = Money(100) + Money(50)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add To Zero`() {
|
|
val expectedResult = Money(0)
|
|
val actualResult = Money(48) + Money(-48)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract To Zero`() {
|
|
val expectedResult = Money(0)
|
|
val actualResult = Money(78) - Money(78)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Addition 1`() {
|
|
val expectedResult = Money(175)
|
|
val actualResult = Money(80) + Money(95)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Addition 2`() {
|
|
val expectedResult = Money(100)
|
|
val actualResult = Money(50) + Money(50)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Addition 3`() {
|
|
val expectedResult = Money(305)
|
|
val actualResult = Money(178) + Money(127)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Standard Subtraction`() {
|
|
val expectedResult = Money(101)
|
|
val actualResult = Money(125) - Money(24)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Subtraction 1`() {
|
|
val expectedResult = Money(175)
|
|
val actualResult = Money(225) - Money(50)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Subtraction 2`() {
|
|
val expectedResult = Money(175)
|
|
val actualResult = Money(325) - Money(150)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Overflow Subtraction 3`() {
|
|
val expectedResult = Money(100)
|
|
val actualResult = Money(150) - Money(50)
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Positive Dollars`() {
|
|
val expectedResult = "545"
|
|
val actualResult = Money(545).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Zero Dollars`() {
|
|
val expectedResult = "50"
|
|
val actualResult = Money(50).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Negative Dollars`() {
|
|
val expectedResult = "-566"
|
|
val actualResult = Money(-566).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Positive and Positive Dollars`() {
|
|
val expectedResult = "6294"
|
|
val actualResult = (Money(4265) + Money(2029)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Positive Dollars and Negative Dollars with Positive Result`() {
|
|
val expectedResult = "132"
|
|
val actualResult = (Money(465) + Money(-333)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Positive Dollars and Negative Dollars with Negative Result`() {
|
|
val expectedResult = "-527"
|
|
val actualResult = (Money(100) + Money(-627)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Negative Dollars and Positive Dollars with Positive Result`() {
|
|
val expectedResult = "132"
|
|
val actualResult = (Money(-333) + Money(465)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Negative Dollars and Positive Dollars with Negative Result`() {
|
|
val expectedResult = "-573"
|
|
val actualResult = (Money(-627) + Money(54)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Add Negative Dollars and Negative Dollars with Negative Result`() {
|
|
val expectedResult = "-1542"
|
|
val actualResult = (Money(-983) + Money(-559)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Positive Dollars and Positive Dollars with Positive Result`() {
|
|
val expectedResult = "5267"
|
|
val actualResult = (Money(10054) - Money(4787)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Positive Dollars and Positive Dollars with Negative Result`() {
|
|
val expectedResult = "-416"
|
|
val actualResult = (Money(147) - Money(563)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Negative Dollars and Negative Dollars with Positive Result`() {
|
|
val expectedResult = "789"
|
|
val actualResult = (Money(-563) - Money(-1352)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Negative Dollars and Negative Dollars with Negative Result`() {
|
|
val expectedResult = "-964"
|
|
val actualResult = (Money(-1563) - Money(-599)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Positive Dollars and Negative Dollars with Positive Result`() {
|
|
val expectedResult = "17684"
|
|
val actualResult = (Money(12354) - Money(-5330)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `Subtract Negative Dollars and Positive Dollars with Negative Result`() {
|
|
val expectedResult = "-568"
|
|
val actualResult = (Money(-432) - Money(136)).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From Positive Dollars and Cents`() {
|
|
val expectedResult = "587"
|
|
val actualResult = Money.fromDollarsAndCents(5, 87).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From Negative Dollars And Cents`() {
|
|
val expectedResult = "-1873"
|
|
val actualResult = Money.fromDollarsAndCents(-18, 73).toString()
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From String - Positive Dollars`() {
|
|
val expectedResult = Money.fromDollarsAndCents(14, 43)
|
|
val actualResult = Money.fromString("$14.43")
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From String - Zero Dollars`() {
|
|
val expectedResult = Money.fromDollarsAndCents(0, 99)
|
|
val actualResult = Money.fromString("$0.99")
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From String - Negative Dollars`() {
|
|
val expectedResult = Money.fromDollarsAndCents(-89, 14)
|
|
val actualResult = Money.fromString("-$89.14")
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From String - Positive Dollars, Zero Cents`() {
|
|
val expectedResult = Money.fromDollarsAndCents(5, 0)
|
|
val actualResult = Money.fromString("$5.00")
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
|
|
@Test
|
|
fun `From String - Negative Dollars, Zero Cents`() {
|
|
val expectedResult = Money.fromDollarsAndCents(-89, 0)
|
|
val actualResult = Money.fromString("-$89.00")
|
|
assertEquals(expectedResult, actualResult, "$expectedResult is not equal to $actualResult")
|
|
}
|
|
} |