forked from eugenp/tutorials
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
BAEL-1758: Working with Enums in Kotlin (eugenp#4413)
- Loading branch information
1 parent
5c0004c
commit be608ae
Showing
5 changed files
with
149 additions
and
0 deletions.
There are no files selected for viewing
33 changes: 33 additions & 0 deletions
33
core-kotlin/src/main/kotlin/com/baeldung/enums/CardType.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 | ||
} |
16 changes: 16 additions & 0 deletions
16
core-kotlin/src/main/kotlin/com/baeldung/enums/CardTypeHelper.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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()) | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
package com.baeldung.enums | ||
|
||
interface ICardLimit { | ||
fun getCreditLimit(): Int | ||
} |
43 changes: 43 additions & 0 deletions
43
core-kotlin/src/test/kotlin/com/baeldung/enums/CardTypeHelperUnitTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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")) | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
core-kotlin/src/test/kotlin/com/baeldung/enums/CardTypeUnitTest.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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) | ||
} | ||
} |