• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
<lambda>null2  * Copyright 2017-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license.
3  */
4 
5 package kotlinx.serialization
6 
7 import kotlinx.serialization.internal.*
8 import kotlinx.serialization.modules.*
9 import org.junit.Test
10 import kotlin.reflect.*
11 import kotlin.test.*
12 
13 class CachingTest {
14     @Test
15     fun testCache() {
16         var factoryCalled = 0
17 
18         val cache = createCache {
19             factoryCalled += 1
20             it.serializerOrNull()
21         }
22 
23         repeat(10) {
24             cache.get(typeOf<String>().kclass())
25         }
26 
27         assertEquals(1, factoryCalled)
28     }
29 
30     @Test
31     fun testParameterizedCache() {
32         var factoryCalled = 0
33 
34         val cache = createParametrizedCache { clazz, types ->
35             factoryCalled += 1
36             val serializers = EmptySerializersModule().serializersForParameters(types, true)!!
37             clazz.parametrizedSerializerOrNull(serializers) { types[0].classifier }
38         }
39 
40         repeat(10) {
41             cache.get(typeOf<Map<*, *>>().kclass(), listOf(typeOf<String>(), typeOf<String>()))
42         }
43 
44         assertEquals(1, factoryCalled)
45     }
46 }
47