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