Home | History | Annotate | Download | only in model
      1 /*
      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 
     17 package com.android.contacts.model;
     18 
     19 import android.os.Bundle;
     20 import android.test.AndroidTestCase;
     21 import android.test.MoreAsserts;
     22 import android.test.suitebuilder.annotation.SmallTest;
     23 
     24 import com.android.contacts.model.account.AccountWithDataSet;
     25 
     26 import com.google.common.collect.Lists;
     27 
     28 import 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
     37 public 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 
     62     public void testStringifyAndUnstringifyLocalAccount() {
     63         final String stringified = AccountWithDataSet.getNullAccount().stringify();
     64 
     65         final AccountWithDataSet restored = AccountWithDataSet.unstringify(stringified);
     66 
     67         assertEquals(AccountWithDataSet.getNullAccount(), restored);
     68     }
     69 
     70     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 }
    133