1c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton/*
2c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * Copyright (C) 2018 The Android Open Source Project
3c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton *
4c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * Licensed under the Apache License, Version 2.0 (the "License");
5c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * you may not use this file except in compliance with the License.
6c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * You may obtain a copy of the License at
7c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton *
8c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton *       http://www.apache.org/licenses/LICENSE-2.0
9c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton *
10c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * Unless required by applicable law or agreed to in writing, software
11c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * distributed under the License is distributed on an "AS IS" BASIS,
12c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * See the License for the specific language governing permissions and
14c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton * limitations under the License.
15c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton */
16c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton
179c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonpackage androidx.core.content
18c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton
199c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonimport androidx.testutils.assertThrows
20c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonimport org.junit.Assert.assertArrayEquals
21c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonimport org.junit.Assert.assertEquals
22c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonimport org.junit.Assert.assertNull
23c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonimport org.junit.Test
24c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonimport java.util.concurrent.atomic.AtomicInteger
25c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton
26c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Whartonclass ContentValuesTest {
27c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton    @Test fun valuesOfValid() {
28c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        val values = contentValuesOf(
29ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "null" to null,
30ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "string" to "string",
31ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "byte" to 1.toByte(),
32ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "short" to 1.toShort(),
33ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "int" to 1,
34ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "long" to 1L,
35ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "float" to 1f,
36ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "double" to 1.0,
37ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "boolean" to true,
38ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "byteArray" to byteArrayOf()
39c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        )
40c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(10, values.size())
41c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertNull(values.get("null"))
42c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals("string", values.get("string"))
43c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1.toByte(), values.get("byte"))
44c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1.toShort(), values.get("short"))
45c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1, values.get("int"))
46c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1L, values.get("long"))
47c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1f, values.get("float"))
48c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(1.0, values.get("double"))
49c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertEquals(true, values.get("boolean"))
50c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertArrayEquals(byteArrayOf(), values.get("byteArray") as ByteArray)
51c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton    }
52c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton
53c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton    @Test fun valuesOfInvalid() {
54c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton        assertThrows<IllegalArgumentException> {
55c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton            contentValuesOf("nope" to AtomicInteger(1))
56ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton        }.hasMessageThat().isEqualTo(
57ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton            "Illegal value type java.util.concurrent.atomic.AtomicInteger for key \"nope\"")
58c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton    }
59c8d88ff8d46317d0cd6071602f1691ca889ac375Jake Wharton}
60