1package com.xtremelabs.robolectric.shadows; 2 3import static org.hamcrest.CoreMatchers.equalTo; 4import static org.junit.Assert.*; 5 6import com.xtremelabs.robolectric.WithTestDefaultsRunner; 7import org.junit.Test; 8import org.junit.runner.RunWith; 9 10import android.os.Bundle; 11import android.os.Handler; 12import android.os.Message; 13 14@RunWith(WithTestDefaultsRunner.class) 15public class MessageTest { 16 17 @Test 18 public void testGetDataShouldLazilyCreateBundle() throws Exception { 19 assertNotNull(new Message().getData()); 20 assertTrue(new Message().getData().isEmpty()); 21 } 22 23 @Test 24 public void testGetData() throws Exception { 25 Message m = new Message(); 26 Bundle b = new Bundle(); 27 m.setData(b); 28 assertThat(m.getData(), equalTo(b)); 29 } 30 31 @Test 32 public void testPeekData() throws Exception { 33 assertNull(new Message().peekData()); 34 35 Message m = new Message(); 36 Bundle b = new Bundle(); 37 m.setData(b); 38 assertThat(m.peekData(), equalTo(b)); 39 } 40 41 @Test 42 public void testGetTarget() throws Exception { 43 Message m = new Message(); 44 Handler h = new Handler(); 45 m.setTarget(h); 46 assertThat(m.getTarget(), equalTo(h)); 47 } 48 49 @Test 50 public void testCopyFrom() throws Exception { 51 Bundle b = new Bundle(); 52 Message m = new Message(); 53 m.arg1 = 10; 54 m.arg2 = 42; 55 m.obj = "obj"; 56 m.what = 24; 57 m.setData(b); 58 m.setTarget(new Handler()); 59 Message m2 = new Message(); 60 m2.copyFrom(m); 61 62 assertThat(m2.arg1, equalTo(m.arg1)); 63 assertThat(m2.arg2, equalTo(m.arg2)); 64 assertThat(m2.obj, equalTo(m.obj)); 65 assertThat(m2.what, equalTo(m.what)); 66 assertThat(m2.getData(), equalTo(m.getData())); 67 assertNull(m2.getTarget()); 68 } 69 70 @Test 71 public void testObtain() throws Exception { 72 Message m = Message.obtain(); 73 assertNotNull(m); 74 } 75 76 @Test 77 public void testObtainWithHandler() throws Exception { 78 Handler h = new Handler(); 79 Message m = Message.obtain(h); 80 assertThat(m.getTarget(), equalTo(h)); 81 } 82 83 @Test 84 public void testObtainWithHandlerAndWhat() throws Exception { 85 Handler h = new Handler(); 86 int what = 10; 87 Message m = Message.obtain(h, what); 88 89 assertThat(m.getTarget(), equalTo(h)); 90 assertThat(m.what, equalTo(what)); 91 assertThat(m.getTarget(), equalTo(h)); 92 } 93 94 @Test 95 public void testObtainWithHandlerWhatAndObject() throws Exception { 96 Handler h = new Handler(); 97 int what = 10; 98 Object obj = "test"; 99 Message m = Message.obtain(h, what, obj); 100 101 assertThat(m.getTarget(), equalTo(h)); 102 assertThat(m.what, equalTo(what)); 103 assertThat(m.getTarget(), equalTo(h)); 104 assertThat(m.obj, equalTo(obj)); 105 } 106 107 @Test 108 public void testObtainWithHandlerWhatAndTwoArgs() throws Exception { 109 Handler h = new Handler(); 110 int what = 2; 111 int arg1 = 3; 112 int arg2 = 5; 113 Message m = Message.obtain(h, what, arg1, arg2); 114 115 assertThat(m.getTarget(), equalTo(h)); 116 assertThat(m.what, equalTo(what)); 117 assertThat(m.arg1, equalTo(arg1)); 118 assertThat(m.arg2, equalTo(arg2)); 119 } 120 121 @Test 122 public void testObtainWithHandlerWhatTwoArgsAndObj() throws Exception { 123 Handler h = new Handler(); 124 int what = 2; 125 int arg1 = 3; 126 int arg2 = 5; 127 Object obj = "test"; 128 Message m = Message.obtain(h, what, arg1, arg2, obj); 129 130 assertThat(m.getTarget(), equalTo(h)); 131 assertThat(m.what, equalTo(what)); 132 assertThat(m.arg1, equalTo(arg1)); 133 assertThat(m.arg2, equalTo(arg2)); 134 assertThat(m.obj, equalTo(obj)); 135 } 136 137 @Test 138 public void testObtainWithMessage() throws Exception { 139 Bundle b = new Bundle(); 140 Message m = new Message(); 141 m.arg1 = 10; 142 m.arg2 = 42; 143 m.obj = "obj"; 144 m.what = 24; 145 m.setData(b); 146 m.setTarget(new Handler()); 147 Message m2 = Message.obtain(m); 148 149 assertThat(m2.arg1, equalTo(m.arg1)); 150 assertThat(m2.arg2, equalTo(m.arg2)); 151 assertThat(m2.obj, equalTo(m.obj)); 152 assertThat(m2.what, equalTo(m.what)); 153 assertThat(m2.getData(), equalTo(m.getData())); 154 assertThat(m2.getTarget(), equalTo(m.getTarget())); 155 } 156 157 @Test 158 public void testSendToTarget() throws Exception { 159 ShadowLooper.pauseMainLooper(); 160 Handler h = new Handler(); 161 Message.obtain(h, 123).sendToTarget(); 162 assertTrue(h.hasMessages(123)); 163 } 164} 165