182eef1935cabfba15ac582595c4955183568350eJake Wharton/* 282eef1935cabfba15ac582595c4955183568350eJake Wharton * Copyright (C) 2018 The Android Open Source Project 382eef1935cabfba15ac582595c4955183568350eJake Wharton * 482eef1935cabfba15ac582595c4955183568350eJake Wharton * Licensed under the Apache License, Version 2.0 (the "License"); 582eef1935cabfba15ac582595c4955183568350eJake Wharton * you may not use this file except in compliance with the License. 682eef1935cabfba15ac582595c4955183568350eJake Wharton * You may obtain a copy of the License at 782eef1935cabfba15ac582595c4955183568350eJake Wharton * 882eef1935cabfba15ac582595c4955183568350eJake Wharton * http://www.apache.org/licenses/LICENSE-2.0 982eef1935cabfba15ac582595c4955183568350eJake Wharton * 1082eef1935cabfba15ac582595c4955183568350eJake Wharton * Unless required by applicable law or agreed to in writing, software 1182eef1935cabfba15ac582595c4955183568350eJake Wharton * distributed under the License is distributed on an "AS IS" BASIS, 1282eef1935cabfba15ac582595c4955183568350eJake Wharton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382eef1935cabfba15ac582595c4955183568350eJake Wharton * See the License for the specific language governing permissions and 1482eef1935cabfba15ac582595c4955183568350eJake Wharton * limitations under the License. 1582eef1935cabfba15ac582595c4955183568350eJake Wharton */ 1682eef1935cabfba15ac582595c4955183568350eJake Wharton 179c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonpackage androidx.core.os 1882eef1935cabfba15ac582595c4955183568350eJake Wharton 1982eef1935cabfba15ac582595c4955183568350eJake Whartonimport android.support.test.InstrumentationRegistry 2082eef1935cabfba15ac582595c4955183568350eJake Whartonimport android.support.test.filters.SdkSuppress 2182eef1935cabfba15ac582595c4955183568350eJake Whartonimport android.view.View 229c80550cbbe357a89e2abeeb9c7769fcaefc3a65Jake Whartonimport androidx.testutils.assertThrows 2382eef1935cabfba15ac582595c4955183568350eJake Whartonimport com.google.common.truth.Truth.assertThat 2482eef1935cabfba15ac582595c4955183568350eJake Whartonimport org.junit.Assert.assertArrayEquals 2582eef1935cabfba15ac582595c4955183568350eJake Whartonimport org.junit.Assert.assertEquals 2682eef1935cabfba15ac582595c4955183568350eJake Whartonimport org.junit.Assert.assertNull 2782eef1935cabfba15ac582595c4955183568350eJake Whartonimport org.junit.Test 2882eef1935cabfba15ac582595c4955183568350eJake Wharton 2982eef1935cabfba15ac582595c4955183568350eJake Wharton@SdkSuppress(minSdkVersion = 21) 3082eef1935cabfba15ac582595c4955183568350eJake Whartonclass PersistableBundleTest { 3182eef1935cabfba15ac582595c4955183568350eJake Wharton @Test fun persistableBundleOfValid() { 3282eef1935cabfba15ac582595c4955183568350eJake Wharton val bundle = persistableBundleOf( 33ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "null" to null, 3482eef1935cabfba15ac582595c4955183568350eJake Wharton 35ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "double" to 1.0, 36ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "int" to 1, 37ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "long" to 1L, 3882eef1935cabfba15ac582595c4955183568350eJake Wharton 39ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "string" to "hey", 4082eef1935cabfba15ac582595c4955183568350eJake Wharton 41ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "doubleArray" to doubleArrayOf(), 42ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "intArray" to intArrayOf(), 43ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "longArray" to longArrayOf(), 4482eef1935cabfba15ac582595c4955183568350eJake Wharton 45ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "stringArray" to arrayOf("hey") 4682eef1935cabfba15ac582595c4955183568350eJake Wharton ) 4782eef1935cabfba15ac582595c4955183568350eJake Wharton 488770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton assertEquals(9, bundle.size()) 4982eef1935cabfba15ac582595c4955183568350eJake Wharton 5082eef1935cabfba15ac582595c4955183568350eJake Wharton assertNull(bundle["null"]) 5182eef1935cabfba15ac582595c4955183568350eJake Wharton 5282eef1935cabfba15ac582595c4955183568350eJake Wharton assertEquals(1.0, bundle["double"]) 5382eef1935cabfba15ac582595c4955183568350eJake Wharton assertEquals(1, bundle["int"]) 5482eef1935cabfba15ac582595c4955183568350eJake Wharton assertEquals(1L, bundle["long"]) 5582eef1935cabfba15ac582595c4955183568350eJake Wharton 5682eef1935cabfba15ac582595c4955183568350eJake Wharton assertEquals("hey", bundle["string"]) 5782eef1935cabfba15ac582595c4955183568350eJake Wharton 5882eef1935cabfba15ac582595c4955183568350eJake Wharton assertArrayEquals(doubleArrayOf(), bundle["doubleArray"] as DoubleArray, 0.0) 5982eef1935cabfba15ac582595c4955183568350eJake Wharton assertArrayEquals(intArrayOf(), bundle["intArray"] as IntArray) 6082eef1935cabfba15ac582595c4955183568350eJake Wharton assertArrayEquals(longArrayOf(), bundle["longArray"] as LongArray) 6182eef1935cabfba15ac582595c4955183568350eJake Wharton 6282eef1935cabfba15ac582595c4955183568350eJake Wharton assertThat(bundle["stringArray"] as Array<*>).asList().containsExactly("hey") 6382eef1935cabfba15ac582595c4955183568350eJake Wharton } 6482eef1935cabfba15ac582595c4955183568350eJake Wharton 658770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton @SdkSuppress(minSdkVersion = 22) 668770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton @Test fun persistableBundleOfValidApi22() { 678770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton val bundle = persistableBundleOf( 68ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "boolean" to true, 69ec87f3d0ed8fb2a23ee2bbe8b323fdd7bdcbf4eaJake Wharton "booleanArray" to booleanArrayOf() 708770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton ) 718770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton 728770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton assertEquals(true, bundle["boolean"]) 738770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton assertArrayEquals(booleanArrayOf(), bundle["booleanArray"] as BooleanArray) 748770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton } 758770f84ffe4cf2ee98744f30ee8b4cd659a65633Jake Wharton 7682eef1935cabfba15ac582595c4955183568350eJake Wharton @Test fun persistableBundleOfInvalid() { 7782eef1935cabfba15ac582595c4955183568350eJake Wharton assertThrows<IllegalArgumentException> { 7882eef1935cabfba15ac582595c4955183568350eJake Wharton persistableBundleOf("nope" to View(InstrumentationRegistry.getContext())) 7982eef1935cabfba15ac582595c4955183568350eJake Wharton }.hasMessageThat().isEqualTo("Illegal value type android.view.View for key \"nope\"") 8082eef1935cabfba15ac582595c4955183568350eJake Wharton 8182eef1935cabfba15ac582595c4955183568350eJake Wharton assertThrows<IllegalArgumentException> { 8282eef1935cabfba15ac582595c4955183568350eJake Wharton persistableBundleOf("nopes" to arrayOf(View(InstrumentationRegistry.getContext()))) 8382eef1935cabfba15ac582595c4955183568350eJake Wharton }.hasMessageThat().isEqualTo("Illegal value array type android.view.View for key \"nopes\"") 8482eef1935cabfba15ac582595c4955183568350eJake Wharton } 8582eef1935cabfba15ac582595c4955183568350eJake Wharton} 86