/**
*
*/
package org.orange.familylink.data;
import android.content.Context;
import android.net.Uri;
import junit.framework.TestCase;
/**
* @author Team Orange
*
*/
public class MessageTest extends TestCase {
static final String TEST_CASE_BODY =
"badsfo放假阿道夫拉法基propellerバトル作品の原点『あやかしびと』の続編にあたる" +
"『あやかしびと2 あやかしびと異伝-雷鷲は天に羽ばたく-』の序盤部分を" +
"PDFファイルにてダウンロードが可能になります。スタッフはもちろん" +
"シナリオ:東出祐一郎原画 :中央東口の『あやかしびと』コンビ。" +
"『あやかしびと』を未プレイの方は、廉価版やお得な3本パックも発売され" +
"お求め安くなっていますので、ぜひこの機会に一度遊んでみてくださいね。" +
"\u1D11E";
private Message mMessage;
/* (non-Javadoc)
* @see junit.framework.TestCase#setUp()
*/
@Override
protected void setUp() throws Exception {
// Call the super constructor (required by JUnit)
super.setUp();
mMessage = new MockMessage();
}
public void testPreconditions() {
assertNull(mMessage.getCode());
assertNull(mMessage.getBody());
}
public void testCode() {
mMessage.setCode(Message.Code.COMMAND);
assertEquals(Message.Code.COMMAND, mMessage.getCode().intValue());
mMessage.setCode(Message.Code.INFORM);
assertEquals(Message.Code.INFORM, mMessage.getCode().intValue());
mMessage.setCode(null);
assertNull(mMessage.getCode());
Integer code = null;
code = Message.Code.INFORM | Message.Code.Extra.Inform.PULSE;
mMessage.setCode(code);
assertEquals(code, mMessage.getCode());
code = Message.Code.COMMAND | Message.Code.Extra.Command.LOCATE_NOW;
mMessage.setCode(code);
assertEquals(code, mMessage.getCode());
// bad code
code = Message.Code.COMMAND | Message.Code.Extra.Inform.URGENT;
mMessage.setCode(code);
assertEquals(code, mMessage.getCode());
try {
mMessage.setCode(0x200);
fail( "Missing exception" );
} catch(Exception e) {
// Optionally make sure you get the correct Exception, too
assertTrue(e instanceof IllegalArgumentException);
System.out.println(e.getMessage());
}
try {
mMessage.setCode(-0x2);
fail( "Missing exception" );
} catch(Exception e) {
// Optionally make sure you get the correct Exception, too
assertTrue(e instanceof IllegalArgumentException);
System.out.println(e.getMessage());
}
}
public void testBody() {
mMessage.setBody(TEST_CASE_BODY);
assertEquals(TEST_CASE_BODY, mMessage.getBody());
mMessage.setBody(null);
assertNull(mMessage.getBody());
}
public void testConstructor() {
Integer code = Message.Code.INFORM |Message.Code.Extra.Inform.PULSE
| Message.Code.Extra.Inform.RESPONSE | Message.Code.Extra.Inform.URGENT;
mMessage = new MockMessage().setCode(code).setBody(TEST_CASE_BODY);
assertEquals(code, mMessage.getCode());
assertEquals(TEST_CASE_BODY, mMessage.getBody());
try {
mMessage = new MockMessage().setCode(0x200).setBody(TEST_CASE_BODY);
fail( "Missing exception" );
} catch(Exception e) {
// Optionally make sure you get the correct Exception, too
assertTrue(e instanceof IllegalArgumentException);
System.out.println(e.getMessage());
}
try {
mMessage = new MockMessage().setCode(-2).setBody(TEST_CASE_BODY);
fail( "Missing exception" );
} catch(Exception e) {
// Optionally make sure you get the correct Exception, too
assertTrue(e instanceof IllegalArgumentException);
System.out.println(e.getMessage());
}
}
public void testEquals() {
Message defaultValue = new MockMessage();
assertFalse(mMessage.equals(null));
assertFalse(mMessage.equals(new Object()));
assertTrue(mMessage.equals(new MockMessage()));
mMessage.setBody("a");
assertFalse(mMessage.equals(defaultValue));
mMessage.setBody(defaultValue.getBody());
assertTrue(mMessage.equals(defaultValue));
mMessage.setCode(Message.Code.COMMAND | Message.Code.Extra.Command.LOCATE_NOW);
assertFalse(mMessage.equals(defaultValue));
mMessage.setCode(null);
assertTrue(defaultValue.equals(mMessage));
}
public void testClone() {
Message defaultValue = new MockMessage();
assertTrue(mMessage.equals(defaultValue));
assertTrue(mMessage.equals(defaultValue.clone()));
mMessage.setBody(TEST_CASE_BODY)
.setCode(Message.Code.INFORM | Message.Code.Extra.Inform.PULSE);
assertEquals(mMessage, mMessage.clone());
// 验证 是深拷贝
Message m = mMessage.clone();
assertEquals(mMessage, m);
m.clone().setBody(TEST_CASE_BODY).setCode(Message.Code.INFORM | Message.Code.Extra.Inform.PULSE);
assertEquals(mMessage, m);
}
public void testJson() {
String json = null;
Message message2 = null;
json = mMessage.toJson();
System.out.println(json);
message2 = new MockMessage().fromJson(json);
assertTrue(mMessage.equals(message2));
mMessage.setCode(Message.Code.INFORM | Message.Code.Extra.Inform.PULSE);
mMessage.setBody(TEST_CASE_BODY);
json = mMessage.toJson();
System.out.println(json);
message2 = new MockMessage().fromJson(json);
assertTrue(mMessage.equals(message2));
}
public static class MockMessage extends Message {
@Override
public void send(Context context, Uri messageUri, String dest,
String password) {
throw new UnsupportedOperationException();
}
@Override
public void receive(String receivedMessage, String password) {
throw new UnsupportedOperationException();
}
}
}