76 lines
2.8 KiB
Kotlin
76 lines
2.8 KiB
Kotlin
package jp.juggler
|
|
|
|
import jp.juggler.crypt.toByteRange
|
|
import jp.juggler.util.data.decodeBase64
|
|
import jp.juggler.util.data.encodeBase64
|
|
import jp.juggler.util.data.encodeBase64Url
|
|
import org.junit.Assert.assertArrayEquals
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Test
|
|
import kotlin.io.encoding.Base64
|
|
import kotlin.io.encoding.ExperimentalEncodingApi
|
|
|
|
class ByteRangeTest {
|
|
|
|
/**
|
|
* ByteRangeや StringUtilsのBase64が、kotlin.io.encoding.Base64 の出力結果と一致するか調べる。
|
|
*/
|
|
@OptIn(ExperimentalEncodingApi::class)
|
|
@Test
|
|
fun testByteRangeBase64() {
|
|
for (len in 0..300) {
|
|
val src = ByteArray(len) { it.toByte() }
|
|
run {
|
|
|
|
val kotlinBase64UrlSafe = Base64.UrlSafe
|
|
|
|
// kotlin.io の Base64.UrlSafe は 末尾の = パディングを残すので後から除去する必要がある
|
|
val encodedByKotlinIo = kotlinBase64UrlSafe.encode(src).trimEnd { it == '=' }
|
|
// ByteRange().encodeBase64Url() はパディングを含まない
|
|
val encodeByByteRange = src.toByteRange().encodeBase64Url()
|
|
// StringUtils の encodeBase64Url() はパディングを含まない
|
|
val encodeByStringUtils = src.encodeBase64Url()
|
|
// もちろんStringUtilsの decodeBase64() でデコードできる
|
|
val decodedByUtils = encodeByStringUtils.decodeBase64()
|
|
assertEquals(
|
|
"len=$len",
|
|
encodedByKotlinIo,
|
|
encodeByByteRange,
|
|
)
|
|
assertEquals(
|
|
"len=$len",
|
|
encodedByKotlinIo,
|
|
encodeByStringUtils,
|
|
)
|
|
assertArrayEquals(
|
|
"len=$len encoded=$encodeByStringUtils",
|
|
src,
|
|
decodedByUtils,
|
|
)
|
|
}
|
|
run {
|
|
val kotinBase64 = Base64.Default
|
|
val encodedByKotlinIo = kotinBase64.encode(src)
|
|
val encodeByByteRange = src.toByteRange().encodeBase64()
|
|
val encodeByUtils = src.encodeBase64()
|
|
val decodedByUtils = encodeByUtils.decodeBase64()
|
|
assertEquals(
|
|
"len=$len",
|
|
encodedByKotlinIo,
|
|
encodeByByteRange,
|
|
)
|
|
assertEquals(
|
|
"len=$len",
|
|
encodedByKotlinIo,
|
|
encodeByUtils,
|
|
)
|
|
assertArrayEquals(
|
|
"len=$len",
|
|
src,
|
|
decodedByUtils,
|
|
)
|
|
}
|
|
}
|
|
}
|
|
}
|