147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport android.view.KeyEvent;
447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport android.view.View;
547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport android.widget.Gallery;
647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport org.junit.Before;
847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport org.junit.Test;
947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport org.junit.runner.RunWith;
1047fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
1147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport static org.hamcrest.CoreMatchers.equalTo;
1247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport static org.hamcrest.CoreMatchers.sameInstance;
1347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport static org.hamcrest.MatcherAssert.assertThat;
1447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzimport static org.junit.Assert.assertTrue;
1547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
1647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz@RunWith(WithTestDefaultsRunner.class)
1747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultzpublic class GalleryTest {
1847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    private Gallery gallery;
1947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    private TestOnKeyListener listener;
2047fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    private KeyEvent event;
2147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
2247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    @Before
2347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    public void setUp() throws Exception {
2447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        gallery = new Gallery(null);
2547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        listener = new TestOnKeyListener();
2647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        gallery.setOnKeyListener(listener);
2747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        event = new KeyEvent(1, 2);
2847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    }
2947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
3047fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    @Test
3147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    public void onKeyDown_dPadRightShouldTriggerKeyEventDPadRight() throws Exception {
3247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertTrue(gallery.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, event));
3347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat(listener.keyCode, equalTo(KeyEvent.KEYCODE_DPAD_RIGHT));
3447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat((Gallery) listener.view, sameInstance(gallery));
3547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat(listener.event, sameInstance(event));
3647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    }
3747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
3847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    @Test
3947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    public void onKeyDown_dPadLeftShouldTriggerKeyEventListener() throws Exception {
4047fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertTrue(gallery.onKeyDown(KeyEvent.KEYCODE_DPAD_RIGHT, event));
4147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat(listener.keyCode, equalTo(KeyEvent.KEYCODE_DPAD_RIGHT));
4247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat((Gallery)listener.view, sameInstance(gallery));
4347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        assertThat(listener.event, sameInstance(event));
4447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    }
4547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
4647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    private static class TestOnKeyListener implements View.OnKeyListener {
4747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        View view;
4847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        int keyCode;
4947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        KeyEvent event;
5047fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz
5147fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        @Override
5247fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        public boolean onKey(View view, int keyCode, KeyEvent event) {
5347fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz            this.view = view;
5447fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz            this.keyCode = keyCode;
5547fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz            this.event = event;
5647fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz            return false;
5747fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz        }
5847fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz    }
5947fa620f97960cf74f08e427dc608f693fbef7f1Tim Labeeuw & Tyler Schultz}
60