• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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