BAEL-1758: Working with Enums in Kotlin (#4413)
This commit is contained in:
parent
5c0004c746
commit
be608ae4fb
33
core-kotlin/src/main/kotlin/com/baeldung/enums/CardType.kt
Normal file
33
core-kotlin/src/main/kotlin/com/baeldung/enums/CardType.kt
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
package com.baeldung.enums
|
||||||
|
|
||||||
|
enum class CardType(val color: String) : ICardLimit {
|
||||||
|
SILVER("gray") {
|
||||||
|
override fun getCreditLimit(): Int {
|
||||||
|
return 100000
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun calculateCashbackPercent(): Float {
|
||||||
|
return 0.25f
|
||||||
|
}
|
||||||
|
},
|
||||||
|
GOLD("yellow") {
|
||||||
|
override fun getCreditLimit(): Int {
|
||||||
|
return 200000
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun calculateCashbackPercent(): Float {
|
||||||
|
return 0.5f
|
||||||
|
}
|
||||||
|
},
|
||||||
|
PLATINUM("black") {
|
||||||
|
override fun getCreditLimit(): Int {
|
||||||
|
return 300000
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun calculateCashbackPercent(): Float {
|
||||||
|
return 0.75f
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
abstract fun calculateCashbackPercent(): Float
|
||||||
|
}
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.baeldung.enums
|
||||||
|
|
||||||
|
class CardTypeHelper {
|
||||||
|
fun getCardTypeByColor(color: String): CardType? {
|
||||||
|
for (cardType in CardType.values()) {
|
||||||
|
if (cardType.color.equals(color)) {
|
||||||
|
return cardType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getCardTypeByName(name: String): CardType {
|
||||||
|
return CardType.valueOf(name.toUpperCase())
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,5 @@
|
|||||||
|
package com.baeldung.enums
|
||||||
|
|
||||||
|
interface ICardLimit {
|
||||||
|
fun getCreditLimit(): Int
|
||||||
|
}
|
@ -0,0 +1,43 @@
|
|||||||
|
package com.baeldung.enums
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
internal class CardTypeHelperUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByColor_thenSilverCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.SILVER, cardTypeHelper.getCardTypeByColor("gray"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByColor_thenGoldCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.GOLD, cardTypeHelper.getCardTypeByColor("yellow"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByColor_thenPlatinumCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.PLATINUM, cardTypeHelper.getCardTypeByColor("black"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByName_thenSilverCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.SILVER, cardTypeHelper.getCardTypeByName("silver"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByName_thenGoldCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.GOLD, cardTypeHelper.getCardTypeByName("gold"))
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun whenGetCardTypeByName_thenPlatinumCardType() {
|
||||||
|
val cardTypeHelper = CardTypeHelper()
|
||||||
|
Assertions.assertEquals(CardType.PLATINUM, cardTypeHelper.getCardTypeByName("platinum"))
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,52 @@
|
|||||||
|
package com.baeldung.enums
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Assertions.assertEquals
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
internal class CardTypeUnitTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenSilverCardType_whenCalculateCashbackPercent_thenReturnCashbackValue() {
|
||||||
|
assertEquals(0.25f, CardType.SILVER.calculateCashbackPercent())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenGoldCardType_whenCalculateCashbackPercent_thenReturnCashbackValue() {
|
||||||
|
assertEquals(0.5f, CardType.GOLD.calculateCashbackPercent())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenPlatinumCardType_whenCalculateCashbackPercent_thenReturnCashbackValue() {
|
||||||
|
assertEquals(0.75f, CardType.PLATINUM.calculateCashbackPercent())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenSilverCardType_whenGetCreditLimit_thenReturnCreditLimit() {
|
||||||
|
assertEquals(100000, CardType.SILVER.getCreditLimit())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenGoldCardType_whenGetCreditLimit_thenReturnCreditLimit() {
|
||||||
|
assertEquals(200000, CardType.GOLD.getCreditLimit())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenPlatinumCardType_whenGetCreditLimit_thenReturnCreditLimit() {
|
||||||
|
assertEquals(300000, CardType.PLATINUM.getCreditLimit())
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenSilverCardType_whenCheckColor_thenReturnColor() {
|
||||||
|
assertEquals("gray", CardType.SILVER.color)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenGoldCardType_whenCheckColor_thenReturnColor() {
|
||||||
|
assertEquals("yellow", CardType.GOLD.color)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun givenPlatinumCardType_whenCheckColor_thenReturnColor() {
|
||||||
|
assertEquals("black", CardType.PLATINUM.color)
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user