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 com.google.common.collect.Lists;
     20 
     21 import android.os.Bundle;
     22 import android.test.AndroidTestCase;
     23 import android.test.MoreAsserts;
     24 import android.test.suitebuilder.annotation.SmallTest;
     25 
     26 import java.util.List;
     27 
     28 /**
     29  * Test case for {@link AccountWithDataSet}.
     30  *
     31  * adb shell am instrument -w -e class com.android.contacts.model.AccountWithDataSetTest \
     32        com.android.contacts.tests/android.test.InstrumentationTestRunner
     33  */
     34 @SmallTest
     35 public class AccountWithDataSetTest extends AndroidTestCase {
     36     public void testStringifyAndUnstringify() {
     37         AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
     38         AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
     39         AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
     40 
     41         // stringify() & unstringify
     42         AccountWithDataSet a1r = AccountWithDataSet.unstringify(a1.stringify());
     43         AccountWithDataSet a2r = AccountWithDataSet.unstringify(a2.stringify());
     44         AccountWithDataSet a3r = AccountWithDataSet.unstringify(a3.stringify());
     45 
     46         assertEquals(a1, a1r);
     47         assertEquals(a2, a2r);
     48         assertEquals(a3, a3r);
     49 
     50         MoreAsserts.assertNotEqual(a1, a2r);
     51         MoreAsserts.assertNotEqual(a1, a3r);
     52 
     53         MoreAsserts.assertNotEqual(a2, a1r);
     54         MoreAsserts.assertNotEqual(a2, a3r);
     55 
     56         MoreAsserts.assertNotEqual(a3, a1r);
     57         MoreAsserts.assertNotEqual(a3, a2r);
     58     }
     59 
     60     public void testStringifyListAndUnstringify() {
     61         AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
     62         AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
     63         AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
     64 
     65         // Empty list
     66         assertEquals(0, stringifyListAndUnstringify().size());
     67 
     68         // 1 element
     69         final List<AccountWithDataSet> listA = stringifyListAndUnstringify(a1);
     70         assertEquals(1, listA.size());
     71         assertEquals(a1, listA.get(0));
     72 
     73         // 2 elements
     74         final List<AccountWithDataSet> listB = stringifyListAndUnstringify(a2, a1);
     75         assertEquals(2, listB.size());
     76         assertEquals(a2, listB.get(0));
     77         assertEquals(a1, listB.get(1));
     78 
     79         // 3 elements
     80         final List<AccountWithDataSet> listC = stringifyListAndUnstringify(a3, a2, a1);
     81         assertEquals(3, listC.size());
     82         assertEquals(a3, listC.get(0));
     83         assertEquals(a2, listC.get(1));
     84         assertEquals(a1, listC.get(2));
     85     }
     86 
     87     private static List<AccountWithDataSet> stringifyListAndUnstringify(
     88             AccountWithDataSet... accounts) {
     89 
     90         List<AccountWithDataSet> list = Lists.newArrayList(accounts);
     91         return AccountWithDataSet.unstringifyList(AccountWithDataSet.stringifyList(list));
     92     }
     93 
     94     public void testParcelable() {
     95         AccountWithDataSet a1 = new AccountWithDataSet("name1", "typeA", null);
     96         AccountWithDataSet a2 = new AccountWithDataSet("name2", "typeB", null);
     97         AccountWithDataSet a3 = new AccountWithDataSet("name3", "typeB", "dataset");
     98 
     99         // Parcel them & unpercel.
    100         final Bundle b = new Bundle();
    101         b.putParcelable("a1", a1);
    102         b.putParcelable("a2", a2);
    103         b.putParcelable("a3", a3);
    104 
    105         AccountWithDataSet a1r = b.getParcelable("a1");
    106         AccountWithDataSet a2r = b.getParcelable("a2");
    107         AccountWithDataSet a3r = b.getParcelable("a3");
    108 
    109         assertEquals(a1, a1r);
    110         assertEquals(a2, a2r);
    111         assertEquals(a3, a3r);
    112 
    113         MoreAsserts.assertNotEqual(a1, a2r);
    114         MoreAsserts.assertNotEqual(a1, a3r);
    115 
    116         MoreAsserts.assertNotEqual(a2, a1r);
    117         MoreAsserts.assertNotEqual(a2, a3r);
    118 
    119         MoreAsserts.assertNotEqual(a3, a1r);
    120         MoreAsserts.assertNotEqual(a3, a2r);
    121     }
    122 }
    123