Skip to content

Commit c9f81a4

Browse files
committed
serialization test
1 parent f7ed203 commit c9f81a4

File tree

1 file changed

+26
-4
lines changed

1 file changed

+26
-4
lines changed

commons/src/test/kotlin/SerializationTest.kt

+26-4
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
11
import com.icuxika.bittersweet.commons.net.request
2-
import kotlinx.serialization.EncodeDefault
3-
import kotlinx.serialization.ExperimentalSerializationApi
4-
import kotlinx.serialization.Serializable
5-
import kotlinx.serialization.encodeToString
2+
import kotlinx.serialization.*
63
import kotlinx.serialization.json.Json
4+
import java.net.URI
5+
import java.net.http.HttpClient
6+
import java.net.http.HttpRequest
7+
import java.net.http.HttpResponse
8+
import kotlin.reflect.typeOf
79
import kotlin.test.Test
10+
import kotlin.test.assertTrue
811

912
class SerializationTest {
1013

1114
@Test
1215
fun basic() {
1316
val response = request<ApiData<String>>("https://www.aprillie.com/go-transfer-station/getOne")
1417
println(response)
18+
assertTrue(response.code == 10000)
19+
20+
val responseK = requestK<ApiData<String>>("https://www.aprillie.com/go-transfer-station/getOne")
21+
println(responseK)
22+
assertTrue(response.code == 10000)
1523

1624
val user = User(1L, "icuxika")
1725
val apiData = ApiData<User>(data = user)
@@ -21,9 +29,23 @@ class SerializationTest {
2129

2230
val apiDataObj = deserialize<ApiData<User>>(apiDataString)
2331
println(apiDataObj)
32+
assertTrue(apiDataObj.code == 10000)
2433
}
2534
}
2635

36+
inline fun <reified T : Any> requestK(url: String): T {
37+
val serializer = serializer(typeOf<T>())
38+
return executeK(serializer, url)
39+
}
40+
41+
fun <T> executeK(serializer: KSerializer<Any?>, url: String): T {
42+
val client = HttpClient.newBuilder().build();
43+
val request = HttpRequest.newBuilder().uri(URI.create(url)).build()
44+
val responseString = client.send(request, HttpResponse.BodyHandlers.ofString()).body()
45+
@Suppress("UNCHECKED_CAST")
46+
return Json.decodeFromString(serializer, responseString) as T
47+
}
48+
2749
@OptIn(ExperimentalSerializationApi::class)
2850
@Serializable
2951
data class ApiData<T>(

0 commit comments

Comments
 (0)