From e996fe1228be62b792d0327efa394b267bcdfb43 Mon Sep 17 00:00:00 2001 From: Tangem Date: Wed, 23 Aug 2023 16:17:16 +0300 Subject: [PATCH] Updated on 2026-08-14 --- .../com/tangem/domain/common/TwinsHelper.kt | 22 ++++---- .../tangem/domain/common/TwinsHelperTest.kt | 50 +++++++++++++++++++ 2 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 domain/legacy/src/test/java/com/tangem/domain/common/TwinsHelperTest.kt 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