package com.chameth.yaotp.util import com.chameth.yaotp.toHexString import org.junit.Assert.* import org.junit.Test class Base32Test { @Test fun testPadToEights_withEmptyString_returnsEmptyString() { assertEquals("", padToEights("")) } @Test fun testPadToEights_withMultipleOfEight_doesNotAddPadding() { assertEquals("0123456701234567", padToEights("0123456701234567")) } @Test fun testPadToEights_withOddAmounts_padsWithEquals() { assertEquals("012345==", padToEights("012345")) assertEquals("0123====", padToEights("0123")) assertEquals("0=======", padToEights("0")) } @Test fun testBase32_withEmptyString() { assertEquals(0, base32Decode("").size) assertEquals(0, base32Decode("====").size) assertEquals(0, base32Decode("========").size) } @Test fun testBase32_withAlignedStrings() { assertEquals("00443214c74254b635cf84653a56d9c675be77df", base32Decode("abcdefghijklmnopqrstuvwzyz234567").toHexString()) assertEquals("ffffffffff", base32Decode("77777777").toHexString()) assertEquals("0000000000", base32Decode("AAAAAAAA").toHexString()) } @Test fun testBase32_withUnalignedStings() { assertEquals("08", base32Decode("A").toHexString()) assertEquals("00", base32Decode("AA").toHexString()) assertEquals("0002", base32Decode("AAA").toHexString()) assertEquals("fffffffc", base32Decode("777777").toHexString()) } @Test fun testBase32_withSampleInputs() { assertEquals("28", base32Decode("FA======").toHexString()) assertEquals("d6", base32Decode("2Y======").toHexString()) assertEquals("d6f8", base32Decode("234A====").toHexString()) assertEquals("d6f800", base32Decode("234AA===").toHexString()) assertEquals("d6f810", base32Decode("234BA===").toHexString()) assertEquals("d6f8110c", base32Decode("234BCDA=").toHexString()) assertEquals("d6f8110c80", base32Decode("234BCDEA").toHexString()) assertEquals("d6f8110c8530", base32Decode("234BCDEFGA======").toHexString()) assertEquals("d6f8110c8536b7c0886429", base32Decode("234BCDEFG234BCDEFE======").toHexString()) } }