1053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalapackage com.xtremelabs.robolectric.shadows;
2053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
3053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport android.os.Binder;
4053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport android.os.Parcel;
5053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport android.os.RemoteException;
6053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
7053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport org.junit.Test;
8053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport org.junit.runner.RunWith;
9053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
10053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport static junit.framework.Assert.assertTrue;
11053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport static org.hamcrest.CoreMatchers.equalTo;
12053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport static org.hamcrest.CoreMatchers.sameInstance;
13053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalaimport static org.hamcrest.MatcherAssert.assertThat;
14053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
15053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala@RunWith(WithTestDefaultsRunner.class)
16053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawalapublic class ShadowBinderTest {
17053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    @Test
18053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    public void transactCallsOnTransact() throws Exception {
19053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        TestBinder testBinder = new TestBinder();
20053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        Parcel data = Parcel.obtain();
21053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        Parcel reply = Parcel.obtain();
22053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        assertTrue(testBinder.transact(2, data, reply, 3));
23053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        assertThat(testBinder.code, equalTo(2));
24053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        assertThat(testBinder.data, sameInstance(data));
25053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        assertThat(testBinder.reply, sameInstance(reply));
26053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        assertThat(testBinder.flags, equalTo(3));
27053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
28053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
29053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    static class TestBinder extends Binder {
30053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int code;
31053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        Parcel data;
32053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        Parcel reply;
33053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        int flags;
34053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala
35053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        @Override
36053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        protected boolean onTransact(int code, Parcel data, Parcel reply, int flags) throws RemoteException {
37053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            this.code = code;
38053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            this.data = data;
39053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            this.reply = reply;
40053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            this.flags = flags;
41053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala            return true;
42053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala        }
43053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala    }
44053f4fe6cc16a60b7c96ad79472274b3c8604ad2Phil Goodwin & Rick Kawala}
45