app/src/test/java/dev/equwal/assistkey/model/ComponentPayloadTest.kt (1541 bytes)
1 package dev.equwal.assistkey.model 2 3 import org.junit.Assert.assertEquals 4 import org.junit.Test 5 import java.util.Random 6 7 class ComponentPayloadTest { 8 9 @Test fun `a payload from before has no extras and reads as it did`() { 10 val old = "com.viwoods.viwoodsai/com.wisky.wiskyai.AIActivity" 11 assertEquals(ComponentPayload.Parts(old, emptyMap()), ComponentPayload.parse(old)) 12 } 13 14 @Test fun `the Viwoods voice prompt carries its one extra`() { 15 val parts = ComponentPayload.parse( 16 "com.viwoods.viwoodsai/com.wisky.wiskyai.WebViewAiActivity?recodeKey=recode_key_start" 17 ) 18 assertEquals("com.viwoods.viwoodsai/com.wisky.wiskyai.WebViewAiActivity", parts.component) 19 assertEquals(mapOf("recodeKey" to "recode_key_start"), parts.extras) 20 } 21 22 @Test fun `junk after the question mark is skipped, not thrown`() { 23 assertEquals(mapOf("a" to "1"), ComponentPayload.parse("p/c?&=x&novalue&a=1").extras) 24 assertEquals(mapOf("a" to "b=c"), ComponentPayload.parse("p/c?a=b=c").extras) 25 } 26 27 @Test fun `parse gives back what format was given`() { 28 val r = Random(21) 29 val letters = "abcXYZ019_." 30 fun word() = (0..r.nextInt(6)).map { letters[r.nextInt(letters.length)] }.joinToString("") 31 repeat(500) { 32 val extras = (0 until r.nextInt(4)).associate { word() to word() } 33 val parts = ComponentPayload.parse(ComponentPayload.format("pkg/" + word(), extras)) 34 assertEquals(extras, parts.extras) 35 } 36 } 37 }