12644d947574240b71c427d457f7a775dc160ec09Yorke Lee/*
22644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Copyright (C) 2012 The Android Open Source Project
32644d947574240b71c427d457f7a775dc160ec09Yorke Lee *
42644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Licensed under the Apache License, Version 2.0 (the "License");
52644d947574240b71c427d457f7a775dc160ec09Yorke Lee * you may not use this file except in compliance with the License.
62644d947574240b71c427d457f7a775dc160ec09Yorke Lee * You may obtain a copy of the License at
72644d947574240b71c427d457f7a775dc160ec09Yorke Lee *
82644d947574240b71c427d457f7a775dc160ec09Yorke Lee *      http://www.apache.org/licenses/LICENSE-2.0
92644d947574240b71c427d457f7a775dc160ec09Yorke Lee *
102644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Unless required by applicable law or agreed to in writing, software
112644d947574240b71c427d457f7a775dc160ec09Yorke Lee * distributed under the License is distributed on an "AS IS" BASIS,
122644d947574240b71c427d457f7a775dc160ec09Yorke Lee * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
132644d947574240b71c427d457f7a775dc160ec09Yorke Lee * See the License for the specific language governing permissions and
142644d947574240b71c427d457f7a775dc160ec09Yorke Lee * limitations under the License
152644d947574240b71c427d457f7a775dc160ec09Yorke Lee */
162644d947574240b71c427d457f7a775dc160ec09Yorke Lee
1769c182afb0e6d82a341a28b4317aa703af768906Gary Maipackage com.android.contacts.model;
182644d947574240b71c427d457f7a775dc160ec09Yorke Lee
192644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport android.content.ContentValues;
202644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport android.net.Uri;
212644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport android.os.Parcel;
222644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport android.os.Parcelable;
237e79b522637807bdfe792db98e80a77a6e3185f7Walter Jangimport android.test.suitebuilder.annotation.SmallTest;
242644d947574240b71c427d457f7a775dc160ec09Yorke Lee
252644d947574240b71c427d457f7a775dc160ec09Yorke Leeimport junit.framework.TestCase;
262644d947574240b71c427d457f7a775dc160ec09Yorke Lee
272644d947574240b71c427d457f7a775dc160ec09Yorke Lee/**
282644d947574240b71c427d457f7a775dc160ec09Yorke Lee * Unit test for {@link RawContact}.
292644d947574240b71c427d457f7a775dc160ec09Yorke Lee */
307e79b522637807bdfe792db98e80a77a6e3185f7Walter Jang@SmallTest
312644d947574240b71c427d457f7a775dc160ec09Yorke Leepublic class RawContactTest extends TestCase {
322644d947574240b71c427d457f7a775dc160ec09Yorke Lee
332644d947574240b71c427d457f7a775dc160ec09Yorke Lee    private RawContact buildRawContact() {
342644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues values = new ContentValues();
352644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key1", "value1");
362644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key2", "value2");
372644d947574240b71c427d457f7a775dc160ec09Yorke Lee
382644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues dataItem = new ContentValues();
392644d947574240b71c427d457f7a775dc160ec09Yorke Lee        dataItem.put("key3", "value3");
402644d947574240b71c427d457f7a775dc160ec09Yorke Lee        dataItem.put("key4", "value4");
412644d947574240b71c427d457f7a775dc160ec09Yorke Lee
422644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final RawContact contact = new RawContact(values);
432644d947574240b71c427d457f7a775dc160ec09Yorke Lee        contact.addDataItemValues(dataItem);
442644d947574240b71c427d457f7a775dc160ec09Yorke Lee
452644d947574240b71c427d457f7a775dc160ec09Yorke Lee        return contact;
462644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
472644d947574240b71c427d457f7a775dc160ec09Yorke Lee
482644d947574240b71c427d457f7a775dc160ec09Yorke Lee    private RawContact buildRawContact2() {
492644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues values = new ContentValues();
502644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key11", "value11");
512644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key22", "value22");
522644d947574240b71c427d457f7a775dc160ec09Yorke Lee
532644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues dataItem = new ContentValues();
542644d947574240b71c427d457f7a775dc160ec09Yorke Lee        dataItem.put("key33", "value33");
552644d947574240b71c427d457f7a775dc160ec09Yorke Lee        dataItem.put("key44", "value44");
562644d947574240b71c427d457f7a775dc160ec09Yorke Lee
572644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final RawContact contact = new RawContact(values);
582644d947574240b71c427d457f7a775dc160ec09Yorke Lee        contact.addDataItemValues(dataItem);
592644d947574240b71c427d457f7a775dc160ec09Yorke Lee
602644d947574240b71c427d457f7a775dc160ec09Yorke Lee        return contact;
612644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
622644d947574240b71c427d457f7a775dc160ec09Yorke Lee
632644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testNotEquals() {
642644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final RawContact one = buildRawContact();
652644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final RawContact two = buildRawContact2();
662644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertFalse(one.equals(two));
672644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
682644d947574240b71c427d457f7a775dc160ec09Yorke Lee
692644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testEquals() {
702644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertEquals(buildRawContact(), buildRawContact());
712644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
722644d947574240b71c427d457f7a775dc160ec09Yorke Lee
732644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testParcelable() {
742644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertParcelableEquals(buildRawContact());
752644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
762644d947574240b71c427d457f7a775dc160ec09Yorke Lee
772644d947574240b71c427d457f7a775dc160ec09Yorke Lee    private RawContact.NamedDataItem buildNamedDataItem() {
782644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues values = new ContentValues();
792644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key1", "value1");
802644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key2", "value2");
812644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final Uri uri = Uri.fromParts("content:", "ssp", "fragment");
822644d947574240b71c427d457f7a775dc160ec09Yorke Lee
832644d947574240b71c427d457f7a775dc160ec09Yorke Lee        return new RawContact.NamedDataItem(uri, values);
842644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
852644d947574240b71c427d457f7a775dc160ec09Yorke Lee
862644d947574240b71c427d457f7a775dc160ec09Yorke Lee    private RawContact.NamedDataItem buildNamedDataItem2() {
872644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final ContentValues values = new ContentValues();
882644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key11", "value11");
892644d947574240b71c427d457f7a775dc160ec09Yorke Lee        values.put("key22", "value22");
902644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final Uri uri = Uri.fromParts("content:", "blah", "blah");
912644d947574240b71c427d457f7a775dc160ec09Yorke Lee
922644d947574240b71c427d457f7a775dc160ec09Yorke Lee        return new RawContact.NamedDataItem(uri, values);
932644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
942644d947574240b71c427d457f7a775dc160ec09Yorke Lee
952644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testNamedDataItemEquals() {
962644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertEquals(buildNamedDataItem(), buildNamedDataItem());
972644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
982644d947574240b71c427d457f7a775dc160ec09Yorke Lee
992644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testNamedDataItemNotEquals() {
1002644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertFalse(buildNamedDataItem().equals(buildNamedDataItem2()));
1012644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
1022644d947574240b71c427d457f7a775dc160ec09Yorke Lee
1032644d947574240b71c427d457f7a775dc160ec09Yorke Lee    public void testNamedDataItemParcelable() {
1042644d947574240b71c427d457f7a775dc160ec09Yorke Lee        assertParcelableEquals(buildNamedDataItem());
1052644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
1062644d947574240b71c427d457f7a775dc160ec09Yorke Lee
1072644d947574240b71c427d457f7a775dc160ec09Yorke Lee    private void assertParcelableEquals(Parcelable parcelable) {
1082644d947574240b71c427d457f7a775dc160ec09Yorke Lee        final Parcel parcel = Parcel.obtain();
1092644d947574240b71c427d457f7a775dc160ec09Yorke Lee        try {
1102644d947574240b71c427d457f7a775dc160ec09Yorke Lee            parcel.writeParcelable(parcelable, 0);
1112644d947574240b71c427d457f7a775dc160ec09Yorke Lee            parcel.setDataPosition(0);
1122644d947574240b71c427d457f7a775dc160ec09Yorke Lee
1132644d947574240b71c427d457f7a775dc160ec09Yorke Lee            Parcelable out = parcel.readParcelable(parcelable.getClass().getClassLoader());
1142644d947574240b71c427d457f7a775dc160ec09Yorke Lee            assertEquals(parcelable, out);
1152644d947574240b71c427d457f7a775dc160ec09Yorke Lee        } finally {
1162644d947574240b71c427d457f7a775dc160ec09Yorke Lee            parcel.recycle();
1172644d947574240b71c427d457f7a775dc160ec09Yorke Lee        }
1182644d947574240b71c427d457f7a775dc160ec09Yorke Lee    }
1192644d947574240b71c427d457f7a775dc160ec09Yorke Lee}
120