193d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesipackage com.xtremelabs.robolectric.shadows; 293d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi 35f52066979dd3a3eb6a0df2cd360611c50fb31ecRyan Richardimport android.view.MotionEvent; 45f52066979dd3a3eb6a0df2cd360611c50fb31ecRyan Richardimport com.xtremelabs.robolectric.WithTestDefaultsRunner; 5ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetskyimport org.junit.Before; 693d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesiimport org.junit.Test; 793d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesiimport org.junit.runner.RunWith; 893d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi 9ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetskyimport static com.xtremelabs.robolectric.Robolectric.shadowOf; 1093d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesiimport static org.hamcrest.CoreMatchers.equalTo; 11ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetskyimport static org.junit.Assert.assertEquals; 125f52066979dd3a3eb6a0df2cd360611c50fb31ecRyan Richardimport static org.junit.Assert.assertThat; 1393d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi 1493d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi@RunWith(WithTestDefaultsRunner.class) 1593d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesipublic class MotionEventTest { 16ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky private MotionEvent event; 17ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky private ShadowMotionEvent shadowMotionEvent; 18ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 19ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Before 20ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky public void setUp() throws Exception { 21ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky event = MotionEvent.obtain(100, 200, MotionEvent.ACTION_MOVE, 5.0f, 10.0f, 0); 22ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowMotionEvent = shadowOf(event); 23ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky } 24ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 25ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Test 2693d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi public void addingSecondPointerSetsCount() { 27ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertThat(event.getX(0), equalTo(5.0f)); 2893d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi assertThat(event.getY(0), equalTo(10.0f)); 2993d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi assertThat(event.getPointerCount(), equalTo(1)); 3093d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi 31ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowOf(event).setPointer2( 20.0f, 30.0f ); 3293d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi 3393d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi assertThat(event.getX(1), equalTo(20.0f)); 3493d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi assertThat(event.getY(1), equalTo(30.0f)); 3593d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi assertThat(event.getPointerCount(), equalTo(2)); 3693d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi } 37ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 38ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Test 39ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky public void canSetPointerIdsByIndex() { 40ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointer2(20.0f, 30.0f); 417a6a972d9edb203a44ff878da8207889d73e5d3cGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointerIds(2, 5); 42ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(2, event.getPointerId(0)); 43ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(5, event.getPointerId(1)); 44ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky } 45ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 46ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Test 47ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky public void indexShowsUpInAction() { 48ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointerIndex(1); 49ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(1 << MotionEvent.ACTION_POINTER_ID_SHIFT | MotionEvent.ACTION_MOVE, event.getAction()); 50ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky } 51ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 52ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Test 53ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky public void canGetActionIndex() { 54ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(0, event.getActionIndex()); 55ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointerIndex(1); 56ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(1, event.getActionIndex()); 57ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky } 58ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky 59ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky @Test 60ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky public void getActionMaskedStripsPointerIndexFromAction() { 61ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(MotionEvent.ACTION_MOVE, event.getActionMasked()); 62ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointerIndex(1); 63ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky assertEquals(MotionEvent.ACTION_MOVE, event.getActionMasked()); 64ca99781d0778d4b64a6fa3858924fe31f593ba2cGlenn Jahnke & Lenny Turetsky } 651dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky 661dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky @Test 671dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky public void canFindPointerIndexFromId() { 681dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointer2(20.0f, 30.0f); 691dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky shadowMotionEvent.setPointerIds(2, 1); 701dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky assertEquals(0, event.findPointerIndex(2)); 711dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky assertEquals(1, event.findPointerIndex(1)); 721dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky assertEquals(-1, event.findPointerIndex(3)); 731dc18ea3dc469aa6ed0d51b7f98f78880fd5725aGlenn Jahnke & Lenny Turetsky } 740a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu 750a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu @Test 760a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu public void canSetMotionEventLocation() throws Exception { 770a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu assertEquals(5.0f, event.getX(), 0.0f); 780a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu assertEquals(10.0f, event.getY(), 0.0f); 790a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu shadowMotionEvent.setLocation(10.0f, 20.0f); 800a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu assertEquals(10.0f, event.getX(), 0.0f); 810a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu assertEquals(20.0f, event.getY(), 0.0f); 820a5ae0648d1be345e04bc429e732170b1942c134Andrew Dai & Wei Wu } 8393d2e533a569470d2901b9d20d9113e3f9761563Michael Portuesi} 84