@@ -2,6 +2,8 @@ package com.segment.analytics.liveplugins.kotlin
22
33import androidx.test.ext.junit.runners.AndroidJUnit4
44import com.segment.analytics.liveplugins.kotlin.utils.MemorySharedPreferences
5+ import com.segment.analytics.substrata.kotlin.JSArray
6+ import com.segment.analytics.substrata.kotlin.JSObject
57import com.segment.analytics.substrata.kotlin.JSScope
68import kotlinx.coroutines.ExperimentalCoroutinesApi
79import org.junit.Assert.assertEquals
@@ -52,4 +54,138 @@ class JSStorageTest {
5254 assertEquals(2 , value)
5355 assertEquals(2 , jsStorage.getValue(" int" ))
5456 }
57+
58+ @Test
59+ fun testJSStorageWithBoolean () {
60+ // set from js
61+ var value = engine.await {
62+ evaluate(""" storage.setValue("boolean", true)""" )
63+ evaluate(""" storage.getValue("boolean")""" )
64+ }
65+ assertNull(exceptionThrown)
66+ assertEquals(true , value)
67+ assertEquals(true , jsStorage.getValue(" boolean" ))
68+
69+ // set from native
70+ jsStorage.setValue(" boolean" , false )
71+ value = engine.await {
72+ evaluate(""" storage.getValue("boolean")""" )
73+ }
74+ assertEquals(false , value)
75+ assertEquals(false , jsStorage.getValue(" boolean" ))
76+ }
77+
78+ @Test
79+ fun testJSStorageWithDouble () {
80+ // set from js
81+ var value = engine.await {
82+ evaluate(""" storage.setValue("double", 3.14)""" )
83+ evaluate(""" storage.getValue("double")""" )
84+ }
85+ assertNull(exceptionThrown)
86+ assertEquals(3.14 , value)
87+ assertEquals(3.14 , jsStorage.getValue(" double" ))
88+
89+ // set from native
90+ jsStorage.setValue(" double" , 2.71 )
91+ value = engine.await {
92+ evaluate(""" storage.getValue("double")""" )
93+ }
94+ assertEquals(2.71 , value)
95+ assertEquals(2.71 , jsStorage.getValue(" double" ))
96+ }
97+
98+ @Test
99+ fun testJSStorageWithString () {
100+ // set from js
101+ var value = engine.await {
102+ evaluate(""" storage.setValue("string", "hello")""" )
103+ evaluate(""" storage.getValue("string")""" )
104+ }
105+ assertNull(exceptionThrown)
106+ assertEquals(" hello" , value)
107+ assertEquals(" hello" , jsStorage.getValue(" string" ))
108+
109+ // set from native
110+ jsStorage.setValue(" string" , " world" )
111+ value = engine.await {
112+ evaluate(""" storage.getValue("string")""" )
113+ }
114+ assertEquals(" world" , value)
115+ assertEquals(" world" , jsStorage.getValue(" string" ))
116+ }
117+
118+ @Test
119+ fun testJSStorageWithLong () {
120+ // set from js
121+ var value = engine.await {
122+ evaluate(""" storage.setValue("long", 1234567890123)""" )
123+ evaluate(""" storage.getValue("long")""" )
124+ }
125+ assertNull(exceptionThrown)
126+ assertEquals(1234567890123L , value)
127+ assertEquals(1234567890123L , jsStorage.getValue(" long" ))
128+
129+ // set from native
130+ jsStorage.setValue(" long" , 9876543210987L )
131+ value = engine.await {
132+ evaluate(""" storage.getValue("long")""" )
133+ }
134+ assertEquals(9876543210987L , value)
135+ assertEquals(9876543210987L , jsStorage.getValue(" long" ))
136+ }
137+
138+ @Test
139+ fun testJSStorageWithJSObject () {
140+ // set from js
141+ var value = engine.await {
142+ evaluate(""" storage.setValue("object", {name: "test", value: 42})""" )
143+ evaluate(""" storage.getValue("object")""" )
144+ }
145+ assertNull(exceptionThrown)
146+ val jsObjectValue = value as JSObject
147+ assertEquals(" test" , jsObjectValue.getString(" name" ))
148+ assertEquals(42 , jsObjectValue.getInt(" value" ))
149+
150+ // set from native
151+ val nativeObject = engine.await {
152+ evaluate(""" {name: "native", value: 100}""" )
153+ } as JSObject
154+ jsStorage.setValue(" object" , nativeObject)
155+ value = engine.await {
156+ evaluate(""" storage.getValue("object")""" )
157+ }
158+ val retrievedObject = value as JSObject
159+ assertEquals(" native" , retrievedObject.getString(" name" ))
160+ assertEquals(100 , retrievedObject.getInt(" value" ))
161+ }
162+
163+ @Test
164+ fun testJSStorageWithJSArray () {
165+ // set from js
166+ var value = engine.await {
167+ evaluate(""" storage.setValue("array", [1, "test", true])""" )
168+ evaluate(""" storage.getValue("array")""" )
169+ }
170+ assertNull(exceptionThrown)
171+ val jsArrayValue = value as JSArray
172+ assertEquals(3 , jsArrayValue.size)
173+ assertEquals(1 , jsArrayValue.getInt(0 ))
174+ assertEquals(" test" , jsArrayValue.getString(1 ))
175+ assertEquals(true , jsArrayValue.getBoolean(2 ))
176+
177+ // set from native
178+ val nativeArray = engine.await {
179+ evaluate(""" [42, "native", false]""" )
180+ } as JSArray
181+ jsStorage.setValue(" array" , nativeArray)
182+ value = engine.await {
183+ evaluate(""" storage.getValue("array")""" )
184+ }
185+ val retrievedArray = value as JSArray
186+ assertEquals(3 , retrievedArray.size)
187+ assertEquals(42 , retrievedArray.getInt(0 ))
188+ assertEquals(" native" , retrievedArray.getString(1 ))
189+ assertEquals(false , retrievedArray.getBoolean(2 ))
190+ }
55191}
0 commit comments