diff --git a/domain/legacy/src/main/java/com/tangem/domain/common/TwinsHelper.kt b/domain/legacy/src/main/java/com/tangem/domain/common/TwinsHelper.kt index 73c31f5a28..c30c02b77c 100644 --- a/domain/legacy/src/main/java/com/tangem/domain/common/TwinsHelper.kt +++ b/domain/legacy/src/main/java/com/tangem/domain/common/TwinsHelper.kt @@ -51,17 +51,19 @@ object TwinsHelper { * cb64 <-> cb65 */ fun isTwinsCompatible(firstCardId: String, secondCardId: String): Boolean { - if (firstCardId.startsWith(FIRST_CARD_FIRST_SERIES) && - secondCardId.startsWith(SECOND_CARD_FIRST_SERIES) - ) { - return true + return secondCardId.startsWith(getCompatibleTwinCardId(firstCardId)) + } + + private fun getCompatibleTwinCardId(cardId: String): String { + return when { + cardId.startsWith(FIRST_CARD_FIRST_SERIES) -> SECOND_CARD_FIRST_SERIES + cardId.startsWith(FIRST_CARD_SECOND_SERIES) -> SECOND_CARD_SECOND_SERIES + cardId.startsWith(SECOND_CARD_FIRST_SERIES) -> FIRST_CARD_FIRST_SERIES + cardId.startsWith(SECOND_CARD_SECOND_SERIES) -> FIRST_CARD_SECOND_SERIES + else -> { + "unknown" + } } - if (firstCardId.startsWith(FIRST_CARD_SECOND_SERIES) && - secondCardId.startsWith(SECOND_CARD_SECOND_SERIES) - ) { - return true - } - return false } } diff --git a/domain/legacy/src/test/java/com/tangem/domain/common/TwinsHelperTest.kt b/domain/legacy/src/test/java/com/tangem/domain/common/TwinsHelperTest.kt new file mode 100644 index 0000000000..2fc624d9b8 --- /dev/null +++ b/domain/legacy/src/test/java/com/tangem/domain/common/TwinsHelperTest.kt @@ -0,0 +1,50 @@ +package com.tangem.domain.common + +import org.junit.Assert.assertFalse +import org.junit.Assert.assertTrue +import org.junit.Test + +class TwinsHelperTest { + + private val pack1Twins = listOf( + "CB610000021", + "CB620000031", + ) + + private val pack2Twins = listOf( + "CB640000012", + "CB650000011", + ) + + @Test + fun `twins compatibility pack 1 success`() { + assertTrue(TwinsHelper.isTwinsCompatible(pack1Twins[0], pack1Twins[1])) + assertTrue(TwinsHelper.isTwinsCompatible(pack1Twins[1], pack1Twins[0])) + } + + @Test + fun `twins compatibility pack 1 same cards`() { + assertFalse(TwinsHelper.isTwinsCompatible(pack1Twins[0], pack1Twins[0])) + assertFalse(TwinsHelper.isTwinsCompatible(pack1Twins[1], pack1Twins[1])) + } + + @Test + fun `twins compatibility pack 2 success`() { + assertTrue(TwinsHelper.isTwinsCompatible(pack2Twins[0], pack2Twins[1])) + assertTrue(TwinsHelper.isTwinsCompatible(pack2Twins[1], pack2Twins[0])) + } + + @Test + fun `twins compatibility pack 2 same cards`() { + assertFalse(TwinsHelper.isTwinsCompatible(pack2Twins[0], pack2Twins[0])) + assertFalse(TwinsHelper.isTwinsCompatible(pack2Twins[1], pack2Twins[1])) + } + + @Test + fun `twins compatibility false for different packs`() { + assertFalse(TwinsHelper.isTwinsCompatible(pack2Twins[0], pack1Twins[1])) + assertFalse(TwinsHelper.isTwinsCompatible(pack1Twins[1], pack2Twins[0])) + assertFalse(TwinsHelper.isTwinsCompatible(pack1Twins[0], pack2Twins[1])) + assertFalse(TwinsHelper.isTwinsCompatible(pack2Twins[1], pack1Twins[0])) + } +} \ No newline at end of file