@@ -9,7 +9,9 @@ import com.segment.analytics.substrata.kotlin.JSObject
99import com.segment.analytics.substrata.kotlin.JSScope
1010import com.segment.analytics.substrata.kotlin.JsonElementConverter
1111import kotlinx.coroutines.ExperimentalCoroutinesApi
12+ import kotlinx.serialization.json.jsonArray
1213import kotlinx.serialization.json.jsonObject
14+ import kotlinx.serialization.json.jsonPrimitive
1315import org.junit.Assert.assertEquals
1416import org.junit.Assert.assertNull
1517import org.junit.Before
@@ -175,29 +177,37 @@ class JSStorageTest {
175177 @Test
176178 fun testJSStorageWithJSArray () {
177179 // set from js
178- var value = engine.await {
180+ var value = engine.await( true ) {
179181 evaluate(""" storage.setValue("array", [1, "test", true])""" )
180182 evaluate(""" storage.getValue("array")""" )
181183 }
182184 assertNull(exceptionThrown)
183- val jsArrayValue = value as JSArray
184- assertEquals(3 , jsArrayValue .size)
185- assertEquals(1 , jsArrayValue.getInt( 0 ))
186- assertEquals(" test" , jsArrayValue.getString( 1 ) )
187- assertEquals(true , jsArrayValue.getBoolean( 2 ))
185+ val jsonArray = JsonElementConverter .read( value).jsonArray
186+ assertEquals(3 , jsonArray .size)
187+ assertEquals(1 , jsonArray[ 0 ].jsonPrimitive.content.toInt( ))
188+ assertEquals(" test" , jsonArray[ 1 ].jsonPrimitive.content )
189+ assertEquals(true , jsonArray[ 2 ].jsonPrimitive.content.toBoolean( ))
188190
189191 // set from native
190- val nativeArray = engine.await {
191- evaluate(""" [42, "native", false]""" )
192- } as JSArray
193- jsStorage.setValue(" array" , nativeArray)
192+ val nativeArray = engine.await(true ) {
193+ evaluate("""
194+ let arr = [42, "native", false]
195+ arr
196+ """ .trimIndent())
197+ }
198+ jsStorage.setValue(" array" , nativeArray as JSArray )
194199 value = engine.await {
195- evaluate(""" storage.getValue("array")""" )
200+ evaluate("""
201+ let arr2 = storage.getValue("array")
202+ arr.length == arr2.length && arr[0] == arr2[0] && arr[1] == arr2[1] && arr[2] == arr2[2]
203+ """ .trimIndent())
196204 }
197- val retrievedArray = value as JSArray
205+ assertEquals(true , value)
206+ val jsValue = jsStorage.getValue(" array" )
207+ val retrievedArray = JsonElementConverter .read(jsValue).jsonArray
198208 assertEquals(3 , retrievedArray.size)
199- assertEquals(42 , retrievedArray.getInt( 0 ))
200- assertEquals(" native" , retrievedArray.getString( 1 ) )
201- assertEquals(false , retrievedArray.getBoolean( 2 ))
209+ assertEquals(42 , retrievedArray[ 0 ].jsonPrimitive.content.toInt( ))
210+ assertEquals(" native" , retrievedArray[ 1 ].jsonPrimitive.content )
211+ assertEquals(false , retrievedArray[ 2 ].jsonPrimitive.content.toBoolean( ))
202212 }
203213}
0 commit comments