blob: 7d6dfa3975a00b77184afa827b34fce5bc05122d [file] [log] [blame]
Chiao Chenge88fcd32012-11-13 18:38:05 -08001/*
2 * Copyright (C) 2011 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
Gary Mai69c182a2016-12-05 13:07:03 -080017package com.android.contacts.model;
Chiao Chenge88fcd32012-11-13 18:38:05 -080018
19import android.os.Bundle;
20import android.test.AndroidTestCase;
21import android.test.MoreAsserts;
22import android.test.suitebuilder.annotation.SmallTest;
23
Gary Mai69c182a2016-12-05 13:07:03 -080024import com.android.contacts.model.account.AccountWithDataSet;
Gary Mai0a49afa2016-12-05 15:53:58 -080025
Chiao Chenge88fcd32012-11-13 18:38:05 -080026import com.google.common.collect.Lists;
27
28import java.util.List;
29
30/**
31 * Test case for {@link AccountWithDataSet}.
32 *
33 * adb shell am instrument -w -e class com.android.contacts.model.AccountWithDataSetTest \
34 com.android.contacts.tests/android.test.InstrumentationTestRunner
35 */
36@SmallTest
37public class AccountWithDataSetTest extends AndroidTestCase {
38 public void testStringifyAndUnstringify() {
39 AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
40 AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
41 AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
42
43 // stringify() & unstringify
44 AccountWithDataSet a1r = AccountWithDataSet.unstringify(a1.stringify());
45 AccountWithDataSet a2r = AccountWithDataSet.unstringify(a2.stringify());
46 AccountWithDataSet a3r = AccountWithDataSet.unstringify(a3.stringify());
47
48 assertEquals(a1, a1r);
49 assertEquals(a2, a2r);
50 assertEquals(a3, a3r);
51
52 MoreAsserts.assertNotEqual(a1, a2r);
53 MoreAsserts.assertNotEqual(a1, a3r);
54
55 MoreAsserts.assertNotEqual(a2, a1r);
56 MoreAsserts.assertNotEqual(a2, a3r);
57
58 MoreAsserts.assertNotEqual(a3, a1r);
59 MoreAsserts.assertNotEqual(a3, a2r);
60 }
61
Marcus Hagerottfac695a2016-08-24 17:02:40 -070062 public void testStringifyAndUnstringifyLocalAccount() {
Marcus Hagerott949d4e82016-09-20 13:23:05 -070063 final String stringified = AccountWithDataSet.getNullAccount().stringify();
Marcus Hagerottfac695a2016-08-24 17:02:40 -070064
65 final AccountWithDataSet restored = AccountWithDataSet.unstringify(stringified);
66
Marcus Hagerott949d4e82016-09-20 13:23:05 -070067 assertEquals(AccountWithDataSet.getNullAccount(), restored);
Marcus Hagerottfac695a2016-08-24 17:02:40 -070068 }
69
Chiao Chenge88fcd32012-11-13 18:38:05 -080070 public void testStringifyListAndUnstringify() {
71 AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
72 AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
73 AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
74
75 // Empty list
76 assertEquals(0, stringifyListAndUnstringify().size());
77
78 // 1 element
79 final List<AccountWithDataSet> listA = stringifyListAndUnstringify(a1);
80 assertEquals(1, listA.size());
81 assertEquals(a1, listA.get(0));
82
83 // 2 elements
84 final List<AccountWithDataSet> listB = stringifyListAndUnstringify(a2, a1);
85 assertEquals(2, listB.size());
86 assertEquals(a2, listB.get(0));
87 assertEquals(a1, listB.get(1));
88
89 // 3 elements
90 final List<AccountWithDataSet> listC = stringifyListAndUnstringify(a3, a2, a1);
91 assertEquals(3, listC.size());
92 assertEquals(a3, listC.get(0));
93 assertEquals(a2, listC.get(1));
94 assertEquals(a1, listC.get(2));
95 }
96
97 private static List<AccountWithDataSet> stringifyListAndUnstringify(
98 AccountWithDataSet... accounts) {
99
100 List<AccountWithDataSet> list = Lists.newArrayList(accounts);
101 return AccountWithDataSet.unstringifyList(AccountWithDataSet.stringifyList(list));
102 }
103
104 public void testParcelable() {
105 AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
106 AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
107 AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
108
109 // Parcel them & unpercel.
110 final Bundle b = new Bundle();
111 b.putParcelable("a1", a1);
112 b.putParcelable("a2", a2);
113 b.putParcelable("a3", a3);
114
115 AccountWithDataSet a1r = b.getParcelable("a1");
116 AccountWithDataSet a2r = b.getParcelable("a2");
117 AccountWithDataSet a3r = b.getParcelable("a3");
118
119 assertEquals(a1, a1r);
120 assertEquals(a2, a2r);
121 assertEquals(a3, a3r);
122
123 MoreAsserts.assertNotEqual(a1, a2r);
124 MoreAsserts.assertNotEqual(a1, a3r);
125
126 MoreAsserts.assertNotEqual(a2, a1r);
127 MoreAsserts.assertNotEqual(a2, a3r);
128
129 MoreAsserts.assertNotEqual(a3, a1r);
130 MoreAsserts.assertNotEqual(a3, a2r);
131 }
132}