📄 messagetest.java
字号:
checkElements(m, v);
}
}
public void testEqualsElement()
{
Message m = new MessageImpl();
for(int i=0; i<100; ++i) {
MessageElement element1 = createElement(m, i);
MessageElement element2 = createElement(m, i);
assertTrue(element1.equals(element2));
}
}
public void testNotEqualsElement()
{
MessageElement element2 = null;
Message m = new MessageImpl();
for(int i=0; i<100; ++i) {
MessageElement element1 = createElement(m, i);
if (element2 != null)
assertTrue(!element1.equals(element2));
element2 = element1;
}
}
public void testClone()
{
Message m = new MessageImpl();
for(int i=0; i<100; ++i) {
MessageElement element1 = createElement(m, i);
MessageElement element2 = (MessageElement)element1.clone();
// Elements are invariant. So cloning just
// returns the same element.
assertTrue(element1 == element2);
assertTrue(element1.equals(element2));
}
}
public void testRemoveElement()
{
try {
Message m1;
Message m2;
MessageElement el1a, el1b, el1c;
MessageElement el2a, el2b, el2c;
//
m1 = new MessageImpl();
el1a = createElement(m1, 1);
m1.addElement(el1a);
m1.removeElement(el1a);
m2 = new MessageImpl();
//printMessage("m1", m1);
//printMessage("m2", m2);
assertTrue(m1.equals(m2));
//
m1 = new MessageImpl();
el1a = createElement(m1, 1);
m1.addElement(el1a);
el1b = createElement(m1, 2);
m1.addElement(el1b);
m2 = new MessageImpl();
assertTrue(!m1.equals(m2));
el2b = createElement(m1, 2);
m2.addElement(el2b);
assertTrue(!m1.equals(m2));
m1.removeElement(el1a);
assertTrue(m1.equals(m2));
} catch(Exception ex) {
ex.printStackTrace();
fail(ex.toString());
}
}
/**
* Convert a message to wire format and check the results. We
* do not depend on constants or methods from Message or
* MessageElement to do the test. This is to provide
* independent verification of the implemenation of Message
* and MessageElement. The techniques used in this test
* are very simple to make it likely that they are correct.
*/
public void testWireFormatNoElements()
{
try {
Message m = new MessageImpl();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getBinaryMessageFormat().writeMessage(baos, m);
baos.close();
byte[] bytes = baos.toByteArray();
// Message magic word
assertTrue("Incorrect message magic[0]", bytes[0] == 'j');
assertTrue("Incorrect message magic[1]", bytes[1] == 'x');
assertTrue("Incorrect message magic[2]", bytes[2] == 'm');
assertTrue("Incorrect message magic[3]", bytes[3] == 'g');
// Message version
assertTrue("Incorrect message version", bytes[4] == 0);
// Namespaces - none
assertTrue(bytes[5] == 0);
assertTrue(bytes[6] == 0);
// Element count
assertTrue(bytes[7] == 0);
assertTrue(bytes[8] == 0);
// End of message
assertTrue(bytes.length == 9);
} catch(Exception ex) {
ex.printStackTrace();
fail("Threw "+ex);
}
}
/**
* Convert a message to wire format and check the results. We
* do not depend on constants or methods from Message or
* MessageElement to do the test. This is to provide
* independent verification of the implemenation of Message
* and MessageElement. The techniques used in this test
* are very simple to make it likely that they are correct.
*/
public void testFormatOneElement()
{
try {
int bi=0;
Message m = new MessageImpl();
MessageElement el = createElement(m, 1);
m.addElement(el);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getBinaryMessageFormat().writeMessage(baos, m);
baos.close();
byte[] bytes = baos.toByteArray();
//dumpBytes(bytes);
// Message magic word
assertTrue("Incorrect message magic[0]", bytes[bi++] == 'j');
assertTrue("Incorrect message magic[1]", bytes[bi++] == 'x');
assertTrue("Incorrect message magic[2]", bytes[bi++] == 'm');
assertTrue("Incorrect message magic[3]", bytes[bi++] == 'g');
// Message version
assertTrue("Incorrect message version", bytes[bi++] == 0);
// Namespaces - one
assertTrue(bytes[bi++] == 0);
assertTrue(bytes[bi++] == 1);
// First and only Namespace length
assertTrue(bytes[bi++] == 0);
assertTrue(bytes[bi++] == 4);
assertTrue(bytes[bi++] == 'd');
assertTrue(bytes[bi++] == 'i');
assertTrue(bytes[bi++] == 'n');
assertTrue(bytes[bi++] == 'g');
// Element count
assertTrue(bytes[bi++] == 0);
assertTrue(bytes[bi++] == 1);
//
// The element
//
bi = checkWireElement(bytes, bi, 1, 2);
// End of message
assertTrue(bytes.length == bi);
} catch(Exception ex) {
ex.printStackTrace();
fail("Threw "+ex);
}
}
/**
* Convert a message to wire format and check the results. We
* do not depend on constants or methods from Message or
* MessageElement to do the test. This is to provide
* independent verification of the implemenation of Message
* and MessageElement.
*/
public void testWireFormatManyElementsSameNamespace()
{
try {
Vector elements = new Vector();
int bi=0;
Message m = new MessageImpl();
for(int i=0; i<40; ++i) {
MessageElement el = createElement(m, i);
m.addElement(el);
elements.addElement(el);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getBinaryMessageFormat().writeMessage(baos, m);
baos.close();
byte[] bytes = baos.toByteArray();
//dumpBytes(bytes);
checkWireMessage(bytes, elements, true);
}
} catch(Exception ex) {
ex.printStackTrace();
fail("Threw "+ex);
}
}
/**
* Convert a message to wire format and check the results. We
* do not depend on constants or methods from Message or
* MessageElement to do the test. This is to provide
* independent verification of the implemenation of Message
* and MessageElement.
*/
public void testWireFormatManyElementsManyNamespace()
{
try {
Vector elements = new Vector();
int bi=0;
Message m = new MessageImpl();
for(int i=0; i<40; ++i) {
MessageElement el = createElement(m, i, "namespace"+(i%4));
m.addElement(el);
elements.addElement(el);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
getBinaryMessageFormat().writeMessage(baos, m);
baos.close();
byte[] bytes = baos.toByteArray();
//dumpBytes(bytes);
checkWireMessage(bytes, elements, false);
}
} catch(Exception ex) {
ex.printStackTrace();
fail("Threw "+ex);
}
}
public void testMessageRead()
{
try {
Message m = new MessageImpl();
for(int i=0; i<30; ++i) {
MessageElement el = createElement(m, i, "space"+(i%3));
m.addElement(el);
ByteArrayOutputStream os = new ByteArrayOutputStream();
getBinaryMessageFormat().writeMessage(os, m);
ByteArrayInputStream is =
new ByteArrayInputStream(os.toByteArray());
Message m2 = new MessageImpl();
getBinaryMessageFormat().readMessage(is, m2);
//printMessage("m", m);
//printMessage("m2", m2);
assertTrue(m.equals(m2));
}
} catch(Exception ex) {
ex.printStackTrace();
fail();
}
}
//
// support methods
//
/**
* Create an element with a namespace of "ding".
*/
MessageElement createElement(Message m, int n)
{
return createElement(m, n, "ding");
}
/**
* Create an element and add it to the message.
* <P>
* post:
* <ul>
* <li>e.getName().equals("elem"+n)
* <li>e.getNamespace() == namespace;
* <li>e.getSize() == n + 10;
* <li>for i = 0..n+10 -> e.getBytes()[i] == i;
* </ul>
**/
MessageElement createElement(Message m, int n, String namespace)
{
MimeMediaType type = testTypes[n % testTypes.length];
int offset = new Random().nextInt(2);
int usedLen = n+10;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -