117ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perrypackage com.xtremelabs.robolectric.shadows;
217ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry
38e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richardimport android.app.Activity;
4eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultzimport android.support.v4.view.PagerAdapter;
517ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perryimport android.support.v4.view.ViewPager;
617ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perryimport android.view.View;
717ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perryimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
8a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richardimport org.junit.Before;
917ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perryimport org.junit.Test;
1017ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perryimport org.junit.runner.RunWith;
1117ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry
12a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richardimport static junit.framework.Assert.*;
13eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz
1417ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry@RunWith(WithTestDefaultsRunner.class)
1517ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perrypublic class ViewPagerTest {
16a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
17a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    private ViewPager pager;
18a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    private TestPagerAdapter adapter;
19a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
20a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    @Before
21a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    public void setUp() throws Exception {
22a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        pager = new ViewPager(new Activity());
23a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        adapter = new TestPagerAdapter();
24a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    }
25a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
2636e501c20e9666e3171b2028694ed0a51787983aPhil Goodwin    @Test
278e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard    public void shouldSetAndGetAdapter() throws Exception {
288e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard        assertNull(pager.getAdapter());
293cb4bf090ff9408fbee30beda09e8208f3bf9510Chris Perry & Phil Goodwin
308e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard        pager.setAdapter(adapter);
318e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard        assertSame(adapter, pager.getAdapter());
323cb4bf090ff9408fbee30beda09e8208f3bf9510Chris Perry & Phil Goodwin    }
333cb4bf090ff9408fbee30beda09e8208f3bf9510Chris Perry & Phil Goodwin
34a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    @Test
35a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    public void test_getAndSetCurrentItem() throws Exception {
36a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        pager.setCurrentItem(2);
37a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        assertEquals(2, pager.getCurrentItem());
38a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    }
39a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
40a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    @Test
41a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    public void setCurrentItem_shouldInvokeListener() throws Exception {
42a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        TestOnPageChangeListener listener = new TestOnPageChangeListener();
43a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        pager.setOnPageChangeListener(listener);
44a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        assertFalse(listener.onPageSelectedCalled);
45a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        pager.setCurrentItem(2);
46a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        assertTrue(listener.onPageSelectedCalled);
47a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    }
48a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
498e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard    private static class TestPagerAdapter extends PagerAdapter {
50eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz        @Override
51eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz        public int getCount() {
52eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz            return 0;
53eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz        }
54eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz
55eefb5d8c984ecd9b37b886cde33cac11ff31d050Phil Goodwin & Tyler Schultz        @Override
568e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard        public boolean isViewFromObject(View view, Object object) {
578e2c6553251a68921c4cc345ca0aaa08a405bf61Phil Goodwin & Ryan Richard            return false;
5817ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry        }
5917ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry    }
60a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
61a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    private static class TestOnPageChangeListener extends ViewPager.SimpleOnPageChangeListener {
62a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        public boolean onPageSelectedCalled;
63a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard
64a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        @Override
65a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        public void onPageSelected(int position) {
66a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard            onPageSelectedCalled = true;
67a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard        }
68a047973927c417569d7403e441db40dcd249fd77Phil Goodwin & Ryan Richard    }
6917ba3349c2cf719120e2c7b5252c90db61202291Aaron VonderHaar & Chris Perry}
70