⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 messagetest.java

📁 jxme的一些相关程序,主要是手机上程序开发以及手机和计算机通信的一些程序资料,程序编译需要Ant支持
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
            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 + -