package triaina.commons.test.workerservice;
import triaina.commons.workerservice.IntentServiceHandler;
import triaina.commons.workerservice.IntentServiceHandlerListener;
import android.content.Intent;
import android.os.Looper;
import android.os.Message;
import android.test.AndroidTestCase;
import android.util.Log;
public class IntentServiceHandlerTest extends AndroidTestCase {
public void testIntentServiceHandler() {
new IntentServiceHandler(getContext().getMainLooper(), new MockListener());
}
public void testHandleMessageMessage() {
MockListener listener = new MockListener();
MockIntentServiceHandler handler = new MockIntentServiceHandler(getContext().getMainLooper(), listener);
Message msg = new Message();
msg.obj = new Intent();
//test for exponential backoff
int amount = -1;
for (int i = 0; i < 10; i++) {
handler.handleMessage(msg);
assertEquals(msg.obj, listener.mIntent);
assertEquals(i, listener.mRetry);
assertTrue(amount <= listener.mDelayAmount);
Log.w("TEST", listener.mDelayAmount + "");
Log.w("TEST", handler.mUptimeMillis + "");
assertEquals(msg.obj, handler.mMsg.obj);
msg = handler.mMsg;
}
}
public static class MockIntentServiceHandler extends IntentServiceHandler {
private Message mMsg;
private long mUptimeMillis;
@Override
public void dispatchMessage(Message msg) {
}
@Override
public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
mMsg = msg;
mUptimeMillis = uptimeMillis;
return true;
}
public MockIntentServiceHandler(Looper looper,
IntentServiceHandlerListener listener) {
super(looper, listener);
}
}
public static class MockListener implements IntentServiceHandlerListener {
private Intent mIntent;
private int mRetry;
private int mDelayAmount;
@Override
public boolean onHandleIntent(Intent intent, int retry, int delayAmount) {
mIntent = intent;
mRetry = retry;
mDelayAmount = delayAmount;
return false;
}
@Override
public void stopSelf(int startId) {
}
}
}