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