160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov/*
260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * Copyright (C) 2010 The Android Open Source Project
360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *
460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * Licensed under the Apache License, Version 2.0 (the "License");
560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * you may not use this file except in compliance with the License.
660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * You may obtain a copy of the License at
760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *
860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *      http://www.apache.org/licenses/LICENSE-2.0
960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *
1060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * Unless required by applicable law or agreed to in writing, software
1160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * distributed under the License is distributed on an "AS IS" BASIS,
1260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * See the License for the specific language governing permissions and
1460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * limitations under the License.
1560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov */
1660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovpackage com.android.common.widget;
1760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
1860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.content.Context;
1960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.database.Cursor;
2060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.database.MatrixCursor;
2160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.test.AndroidTestCase;
2260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.test.suitebuilder.annotation.SmallTest;
2360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.view.View;
2460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovimport android.view.ViewGroup;
2560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
2660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov/**
2760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * Tests for {@link CompositeCursorAdapter}.
2860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *
2960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * To execute, run:
3060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * <pre>
3160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *   adb shell am instrument -e class com.android.common.widget.CompositeCursorAdapterTest \
3260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov *      -w com.android.common.tests/android.test.InstrumentationTestRunner
3360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov * </pre>
3460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov */
3560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov@SmallTest
3660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikovpublic class CompositeCursorAdapterTest extends AndroidTestCase {
3760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
3860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public class TestCompositeCursorAdapter extends CompositeCursorAdapter {
3960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
4060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        public TestCompositeCursorAdapter() {
4160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            super(CompositeCursorAdapterTest.this.getContext());
4260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
4360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
4460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        private StringBuilder mRequests = new StringBuilder();
4560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
4660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        @Override
4760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        protected View newHeaderView(Context context, int partition, Cursor cursor, ViewGroup parent) {
4860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            return new View(context);
4960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
5060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
5160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        @Override
5260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        protected void bindHeaderView(View view, int partition, Cursor cursor) {
5360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            mRequests.append(partition + (cursor == null ? "" : cursor.getColumnNames()[0])
5460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov                    + "[H] ");
5560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
5660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
5760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        @Override
5860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        protected View newView(Context context, int sectionIndex, Cursor cursor, int position,
5960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov                ViewGroup parent) {
6060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            return new View(context);
6160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
6260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
6360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        @Override
6460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        protected void bindView(View v, int partition, Cursor cursor, int position) {
6560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            if (!cursor.moveToPosition(position)) {
6660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov                fail("Invalid position:" + partition + " " + cursor.getColumnNames()[0] + " "
6760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov                        + position);
6860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            }
6960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
7060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            mRequests.append(partition + cursor.getColumnNames()[0] + "["
7160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov                    + cursor.getInt(0) + "] ");
7260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
7360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
7460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        @Override
7560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        public String toString() {
7660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            return mRequests.toString().trim();
7760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
7860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
7960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
8060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetCountNoEmptySections() {
8160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
8260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
8360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
8460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
8560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 2));
8660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 3));
8760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
8860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(5, adapter.getCount());
8960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
9060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
9160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetViewNoEmptySections() {
9260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
9360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
9460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
9560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
9660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
9760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
9860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
9960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        for (int i = 0; i < adapter.getCount(); i++) {
10060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            adapter.getView(i, null, null);
10160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
10260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
10360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals("0a[0] 1b[0] 1b[1]", adapter.toString());
10460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
10560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
10660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetCountWithHeadersAndNoEmptySections() {
10760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
10860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
10960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
11060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
11160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 2));
11260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 3));
11360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
11460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(7, adapter.getCount());
11560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
11660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
11760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetViewWithHeadersNoEmptySections() {
11860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
11960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
12060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
12160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
12260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
12360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
12460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
12560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        for (int i = 0; i < adapter.getCount(); i++) {
12660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            adapter.getView(i, null, null);
12760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
12860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
12960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals("0a[H] 0a[0] 1b[H] 1b[0] 1b[1]", adapter.toString());
13060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
13160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
13260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetCountWithHiddenEmptySection() {
13360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
13460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
13560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, true);
13660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
13760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("a", 2));
13860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
13960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(3, adapter.getCount());
14060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
14160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
14260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetPartitionForPosition() {
14360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
14460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
14560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
14660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
14760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
14860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
14960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
15060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(0, adapter.getPartitionForPosition(0));
15160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(1, adapter.getPartitionForPosition(1));
15260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(1, adapter.getPartitionForPosition(2));
15360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(1, adapter.getPartitionForPosition(3));
15460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
15560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
15660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetOffsetForPosition() {
15760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
15860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
15960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
16060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
16160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
16260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
16360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
16460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(0, adapter.getOffsetInPartition(0));
16560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(-1, adapter.getOffsetInPartition(1));
16660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(0, adapter.getOffsetInPartition(2));
16760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(1, adapter.getOffsetInPartition(3));
16860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
16960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
17060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetPositionForPartition() {
17160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
17260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
17360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
17460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
17560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
17660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
17760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
17860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(0, adapter.getPositionForPartition(0));
17960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(2, adapter.getPositionForPartition(1));
18060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
18160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
18260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetViewWithHiddenEmptySections() {
18360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
18460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
18560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(false, false);
18660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
18760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
18860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
18960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        for (int i = 0; i < adapter.getCount(); i++) {
19060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            adapter.getView(i, null, null);
19160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
19260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
19360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals("1b[0] 1b[1]", adapter.toString());
19460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
19560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
19660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetCountWithShownEmptySection() {
19760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
19860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
19960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
20060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
20160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("a", 2));
20260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
20360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals(4, adapter.getCount());
20460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
20560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
20660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testGetViewWithShownEmptySections() {
20760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
20860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
20960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
21060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
21160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
21260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
21360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        for (int i = 0; i < adapter.getCount(); i++) {
21460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            adapter.getView(i, null, null);
21560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
21660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
21760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertEquals("0[H] 1b[H] 1b[0] 1b[1]", adapter.toString());
21860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
21960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
22060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testAreAllItemsEnabledFalse() {
22160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
22260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
22360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
22460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
22560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertFalse(adapter.areAllItemsEnabled());
22660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
22760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
22860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testAreAllItemsEnabledTrue() {
22960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
23060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
23160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
23260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
23360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertTrue(adapter.areAllItemsEnabled());
23460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
23560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
23660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    public void testIsEnabled() {
23760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        TestCompositeCursorAdapter adapter = new TestCompositeCursorAdapter();
23860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, false);
23960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.addPartition(true, true);
24060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
24160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(0, makeCursor("a", 1));
24260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        adapter.changeCursor(1, makeCursor("b", 2));
24360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
24460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertTrue(adapter.isEnabled(0));
24560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertFalse(adapter.isEnabled(1));
24660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertTrue(adapter.isEnabled(2));
24760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        assertTrue(adapter.isEnabled(3));
24860ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
24960ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov
25060ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    private Cursor makeCursor(String name, int count) {
25160ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        MatrixCursor cursor = new MatrixCursor(new String[]{name});
25260ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        for (int i = 0; i < count; i++) {
25360ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov            cursor.addRow(new Object[]{i});
25460ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        }
25560ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov        return cursor;
25660ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov    }
25760ae52719e0567fa5b1860df19807716951eca50Dmitri Plotnikov}
258