Skip to content

Commit 4527d92

Browse files
committed
add unit test for other types
1 parent 829c006 commit 4527d92

File tree

1 file changed

+136
-0
lines changed
  • analytics-kotlin-live/src/androidTest/java/com/segment/analytics/liveplugins/kotlin

1 file changed

+136
-0
lines changed

analytics-kotlin-live/src/androidTest/java/com/segment/analytics/liveplugins/kotlin/JSStorageTest.kt

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ package com.segment.analytics.liveplugins.kotlin
22

33
import androidx.test.ext.junit.runners.AndroidJUnit4
44
import com.segment.analytics.liveplugins.kotlin.utils.MemorySharedPreferences
5+
import com.segment.analytics.substrata.kotlin.JSArray
6+
import com.segment.analytics.substrata.kotlin.JSObject
57
import com.segment.analytics.substrata.kotlin.JSScope
68
import kotlinx.coroutines.ExperimentalCoroutinesApi
79
import 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

Comments
 (0)