1d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin/*
2d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * Copyright 2018 The Android Open Source Project
3d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin *
4d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * Licensed under the Apache License, Version 2.0 (the "License");
5d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * you may not use this file except in compliance with the License.
6d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * You may obtain a copy of the License at
7d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin *
8d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin *      http://www.apache.org/licenses/LICENSE-2.0
9d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin *
10d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * Unless required by applicable law or agreed to in writing, software
11d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * distributed under the License is distributed on an "AS IS" BASIS,
12d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * See the License for the specific language governing permissions and
14d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin * limitations under the License.
15d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin */
16d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
17d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinpackage androidx.core.app;
18d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
19d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport static org.junit.Assert.assertEquals;
207c734cc65886276ab78384ec73f597cafd274078Kodlee Yinimport static org.junit.Assert.assertFalse;
217c734cc65886276ab78384ec73f597cafd274078Kodlee Yinimport static org.junit.Assert.assertNull;
22d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
23d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport android.graphics.Bitmap;
24d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport android.os.Bundle;
25d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport android.support.test.filters.SmallTest;
26d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport android.support.test.runner.AndroidJUnit4;
27d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
287c734cc65886276ab78384ec73f597cafd274078Kodlee Yinimport androidx.core.graphics.drawable.IconCompat;
297c734cc65886276ab78384ec73f597cafd274078Kodlee Yin
30d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport org.junit.Test;
31d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinimport org.junit.runner.RunWith;
32d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
33d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin@SmallTest
34d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin@RunWith(AndroidJUnit4.class)
35d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yinpublic class PersonTest {
36d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    private static final CharSequence TEST_NAME = "Example Name";
377c734cc65886276ab78384ec73f597cafd274078Kodlee Yin    private static final IconCompat TEST_ICON =
387c734cc65886276ab78384ec73f597cafd274078Kodlee Yin            IconCompat.createWithBitmap(Bitmap.createBitmap(1, 1, Bitmap.Config.ARGB_8888));
39d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    private static final String TEST_URI = "mailto:example@example.com";
40d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    private static final String TEST_KEY = "example-key";
41d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    private static final boolean TEST_IS_BOT = true;
42d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    private static final boolean TEST_IS_IMPORTANT = true;
43d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
44d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
45d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void bundle() {
46d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder()
47d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setImportant(TEST_IS_IMPORTANT)
48d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setBot(TEST_IS_BOT)
49d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setKey(TEST_KEY)
50d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setUri(TEST_URI)
51d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setIcon(TEST_ICON)
52d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setName(TEST_NAME)
53d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .build();
54d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
55d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Bundle personBundle = person.toBundle();
56d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person result = Person.fromBundle(personBundle);
57d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
58d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_NAME, result.getName());
59d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_URI, result.getUri());
60d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_KEY, result.getKey());
61d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_BOT, result.isBot());
62d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_IMPORTANT, result.isImportant());
637c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertEquals(TEST_ICON.toBundle().toString(), result.getIcon().toBundle().toString());
647c734cc65886276ab78384ec73f597cafd274078Kodlee Yin    }
657c734cc65886276ab78384ec73f597cafd274078Kodlee Yin
667c734cc65886276ab78384ec73f597cafd274078Kodlee Yin    @Test
677c734cc65886276ab78384ec73f597cafd274078Kodlee Yin    public void bundle_defaultValues() {
687c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        Person person = new Person.Builder().build();
69d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
707c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        Bundle personBundle = person.toBundle();
717c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        Person result = Person.fromBundle(personBundle);
727c734cc65886276ab78384ec73f597cafd274078Kodlee Yin
737c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertNull(result.getIcon());
747c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertNull(result.getKey());
757c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertNull(result.getName());
767c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertNull(result.getUri());
777c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertFalse(result.isImportant());
787c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertFalse(result.isBot());
79d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
80d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
81d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
82d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void toBuilder() {
83d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder()
84d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setImportant(TEST_IS_IMPORTANT)
85d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setBot(TEST_IS_BOT)
86d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setKey(TEST_KEY)
87d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setUri(TEST_URI)
88d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setIcon(TEST_ICON)
89d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .setName(TEST_NAME)
90d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin                .build();
91d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person result = person.toBuilder().build();
92d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
93d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_NAME, result.getName());
94d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_URI, result.getUri());
95d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_KEY, result.getKey());
96d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_BOT, result.isBot());
97d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_IMPORTANT, result.isImportant());
987c734cc65886276ab78384ec73f597cafd274078Kodlee Yin        assertEquals(TEST_ICON.toBundle().toString(), result.getIcon().toBundle().toString());
99d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
100d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
101d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
102d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void getName() {
103d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setName(TEST_NAME).build();
104d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_NAME, person.getName());
105d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
106d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
107d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
108d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void getIcon() {
109d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setIcon(TEST_ICON).build();
110d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_ICON, person.getIcon());
111d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
112d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
113d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
114d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void getUri() {
115d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setUri(TEST_URI).build();
116d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_URI, person.getUri());
117d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
118d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
119d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
120d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void getKey() {
121d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setKey(TEST_KEY).build();
122d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_KEY, person.getKey());
123d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
124d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
125d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
126d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void isBot() {
127d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setBot(TEST_IS_BOT).build();
128d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_BOT, person.isBot());
129d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
130d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin
131d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    @Test
132d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    public void isImportant() {
133d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        Person person = new Person.Builder().setImportant(TEST_IS_IMPORTANT).build();
134d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin        assertEquals(TEST_IS_IMPORTANT, person.isImportant());
135d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin    }
136d3bcc2e10f9b798597f11b7f198c82c716511a87Kodlee Yin}
137