1 /* 2 * Copyright 2017-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license. 3 */ 4 5 package kotlinx.serialization.features 6 7 import kotlinx.serialization.* 8 import kotlinx.serialization.json.* 9 import kotlinx.serialization.test.* 10 import kotlin.test.* 11 12 class PrimitiveArraySerializersTest : JsonTestBase() { 13 14 @Serializable 15 data class A( 16 val arr: ByteArray, 17 val arr2: IntArray = intArrayOf(1, 2), 18 val arr3: BooleanArray = booleanArrayOf(true, false), 19 var arr4: CharArray = charArrayOf('a', 'b', 'c'), 20 val arr5: DoubleArray = doubleArrayOf(Double.NaN, 0.1, -0.25), 21 val arr6: ShortArray = shortArrayOf(1, 2, 3), 22 val arr7: LongArray = longArrayOf(1, 2, 3), 23 val arr8: FloatArray = floatArrayOf(1.25f, 2.25f, 3.25f) 24 ) { equalsnull25 override fun equals(other: Any?): Boolean { 26 if (this === other) return true 27 if (other !is A) return false 28 29 if (!arr.contentEquals(other.arr)) return false 30 if (!arr2.contentEquals(other.arr2)) return false 31 if (!arr3.contentEquals(other.arr3)) return false 32 if (!arr4.contentEquals(other.arr4)) return false 33 if (!arr5.contentEquals(other.arr5)) return false 34 if (!arr6.contentEquals(other.arr6)) return false 35 if (!arr7.contentEquals(other.arr7)) return false 36 if (!arr8.contentEquals(other.arr8)) return false 37 38 return true 39 } 40 hashCodenull41 override fun hashCode(): Int { 42 var result = arr.contentHashCode() 43 result = 31 * result + arr2.contentHashCode() 44 result = 31 * result + arr3.contentHashCode() 45 result = 31 * result + arr4.contentHashCode() 46 result = 31 * result + arr5.contentHashCode() 47 result = 31 * result + arr6.contentHashCode() 48 result = 31 * result + arr7.contentHashCode() 49 result = 31 * result + arr8.contentHashCode() 50 return result 51 } 52 toStringnull53 override fun toString(): String { 54 return "A(arr=${arr.contentToString()}, arr2=${arr2.contentToString()}, arr3=${arr3.contentToString()}, arr4=${arr4.contentToString()}, arr5=${arr5.contentToString()}, arr6=${arr6.contentToString()}, arr7=${arr7.contentToString()}, arr8=${arr8.contentToString()})" 55 } 56 } 57 58 @Test testCanBeSerializednull59 fun testCanBeSerialized() = assertStringFormAndRestored( 60 """{"arr":[1,2,3],"arr2":[1,2],"arr3":[true,false],"arr4":["a","b","c"],"arr5":[NaN,0.1,-0.25],"arr6":[1,2,3],"arr7":[1,2,3],"arr8":[1.25,2.25,3.25]}""", 61 A(byteArrayOf(1, 2, 3)), 62 A.serializer(), 63 lenient 64 ) 65 } 66