package net.rdrei.android.scdl2.test;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
/**
* Taken from Pivotal's implemention. Sigh.
* @author pascal
*
*/
@Implements(Message.class)
public class ShadowMessage {
private Bundle data;
private Handler target;
private long when;
@RealObject
private Message message;
@Implementation
public void setData(Bundle data) {
this.data = data;
}
@Implementation
public void setTarget(Handler target) {
this.target = target;
}
@Implementation
public Bundle peekData() {
return data;
}
@Implementation
public Bundle getData() {
if (data == null) {
data = new Bundle();
}
return data;
}
@Implementation
public Handler getTarget() {
return target;
}
@Implementation
public void copyFrom(Message m) {
message.arg1 = m.arg1;
message.arg2 = m.arg2;
message.obj = m.obj;
message.what = m.what;
message.setData(m.getData());
}
@Implementation
public static Message obtain() {
return new Message();
}
@Implementation
public static Message obtain(Handler h) {
Message m = new Message();
m.setTarget(h);
return m;
}
@Implementation
public static Message obtain(Handler h, int what) {
Message m = obtain(h);
m.what = what;
return m;
}
@Implementation
public static Message obtain(Handler h, int what, Object obj) {
Message m = obtain(h, what);
m.obj = obj;
return m;
}
@Implementation
public static Message obtain(Handler h, int what, int arg1, int arg2) {
Message m = obtain(h, what);
m.arg1 = arg1;
m.arg2 = arg2;
return m;
}
@Implementation
public static Message obtain(Handler h, int what, int arg1, int arg2, Object obj) {
Message m = obtain(h, what, arg1, arg2);
m.obj = obj;
return m;
}
@Implementation
public static Message obtain(Message msg) {
Message m = new Message();
m.copyFrom(msg);
m.setTarget(msg.getTarget());
return m;
}
@Implementation
public void sendToTarget() {
target.sendMessage(message);
}
@Implementation
public long getWhen() {
return when;
}
public void setWhen(long when) {
this.when = when;
}
}