Code example for Instrumentation

Methods: sendCharacterSyncwaitForIdleSync, sleep

0
    public void testTouchScrolling() { 
        Instrumentation inst = getInstrumentation();
         
       int firstVisiblePosition = touchScroll(inst);
         
        inst.sendCharacterSync(KeyEvent.KEYCODE_BACK);
        inst.waitForIdleSync();
         
        assertTrue("List not in touch mode", mListView.isInTouchMode()); 
        assertTrue("List did not preserve scroll position", 
                firstVisiblePosition == mListView.getFirstVisiblePosition()); 
    } 
     
    /** 
     * Scroll the list using arrows, launch new activity, change to touch mode, hit back, make sure 
     * we're still scrolled. 
     */ 
    @LargeTest 
    public void testKeyScrollingToTouchMode() { 
        Instrumentation inst = getInstrumentation();
         
        int firstVisiblePosition = arrowScroll(inst);
         
        TouchUtils.dragQuarterScreenUp(this);
        inst.sendCharacterSync(KeyEvent.KEYCODE_BACK);
        inst.waitForIdleSync();
         
        assertTrue("List did not change to touch mode", mListView.isInTouchMode()); 
        assertTrue("List did not preserve scroll position", 
                firstVisiblePosition == mListView.getFirstVisiblePosition()); 
    } 
 
 
    /** 
     * Scroll the list using touch, launch new activity, change to trackball mode, hit back, make 
     * sure we're still scrolled. 
     */ 
    @FlakyTest(tolerance=3) 
    @LargeTest 
    public void testTouchScrollingToTrackballMode() { 
        Instrumentation inst = getInstrumentation();
 
        int firstVisiblePosition = touchScroll(inst);
 
        inst.sendCharacterSync(KeyEvent.KEYCODE_DPAD_DOWN);
        inst.waitForIdleSync();
        inst.sendCharacterSync(KeyEvent.KEYCODE_DPAD_DOWN);
        inst.waitForIdleSync();
        inst.sendCharacterSync(KeyEvent.KEYCODE_BACK);
        inst.waitForIdleSync();
        assertTrue("List not in trackball mode", !mListView.isInTouchMode());
        assertTrue("List did not preserve scroll position", firstVisiblePosition == mListView
                .getFirstVisiblePosition()); 
    } 
     
    public int arrowScroll(Instrumentation inst) {
        int count = mListView.getChildCount();
 
        for (int i = 0; i < count * 2; i++) {
            inst.sendCharacterSync(KeyEvent.KEYCODE_DPAD_DOWN);
        } 
        inst.waitForIdleSync();
 
        int firstVisiblePosition = mListView.getFirstVisiblePosition();
        assertTrue("Arrow scroll did not happen", firstVisiblePosition > 0);
        assertTrue("List still in touch mode", !mListView.isInTouchMode());
 
        inst.sendCharacterSync(KeyEvent.KEYCODE_DPAD_CENTER);
        inst.waitForIdleSync();
 
        try { 
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
 
        return firstVisiblePosition;
    } 
 
    public int touchScroll(Instrumentation inst) {
        TouchUtils.dragQuarterScreenUp(this);
        inst.waitForIdleSync();
        TouchUtils.dragQuarterScreenUp(this);
        inst.waitForIdleSync();
        TouchUtils.dragQuarterScreenUp(this);
        inst.waitForIdleSync();
        TouchUtils.dragQuarterScreenUp(this);
        inst.waitForIdleSync();
 
        int firstVisiblePosition = mListView.getFirstVisiblePosition();
        assertTrue("Touch scroll did not happen", firstVisiblePosition > 0);
        assertTrue("List not in touch mode", mListView.isInTouchMode());
 
        TouchUtils.clickView(this, mListView.getChildAt(mListView.getChildCount() - 1));
        inst.waitForIdleSync();
 
        try { 
            Thread.sleep(3000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        } 
 
        return firstVisiblePosition;