Package org.jibx.ws.encoding.dime

Source Code of org.jibx.ws.encoding.dime.DimeInTest

package org.jibx.ws.encoding.dime;

import java.io.ByteArrayInputStream;
import java.io.IOException;

import org.jibx.runtime.impl.InByteBuffer;
import org.jibx.ws.encoding.dime.DimeCommon;
import org.jibx.ws.encoding.dime.DimeInputBuffer;

import junit.framework.TestCase;

public class DimeInTest extends TestCase
{
    /**
     * Get DIME input buffer for message.
     *
     * @param msg string containing message data
     * @return buffer
     */
    private static DimeInputBuffer messageBuffer(String msg) {
        DimeInputBuffer dbuff = new DimeInputBuffer();
        InByteBuffer bbuff = new InByteBuffer();
        bbuff.setInput(new ByteArrayInputStream(TestData.messageBytes(msg)));
        dbuff.setBuffer(bbuff);
        return dbuff;
    }

    public void testEmptyMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.EMPTY_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertEquals("Wrong offset", DimeCommon.HEADER_SIZE, buff.getOffset());
        assertEquals("Wrong limit", DimeCommon.HEADER_SIZE, buff.getLimit());
        assertFalse("No data in message", buff.require(1));
        assertFalse("No more parts in message", buff.nextPart());
        assertFalse("No more messages", buff.nextMessage());
    }

    public void testBadVersionMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.BAD_VERSION_MESSAGE);
        try {
            assertTrue("Initial message", buff.nextMessage());
            buff.nextPart();
            fail();
        } catch (IOException e) {
        }
    }

    public void testNotFirstMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.NOT_FIRST_MESSAGE);
        try {
            assertTrue("Initial message", buff.nextMessage());
            buff.nextPart();
            fail();
        } catch (IOException e) {
        }
    }

    public void testNotLastMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.NOT_LAST_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        try {
            buff.nextPart();
            fail();
        } catch (IOException e) {
        }
    }

    public void testChunkedNoChunkMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.CHUNKED_NOCHUNK_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        try {
            buff.require(1);
            fail();
        } catch (IOException e) {
        }
    }

    public void testOptIdTypeOnlyMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.OPTIDTYPEONLY_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertEquals("Record id", "bc", buff.getPartIdentifier());
        assertEquals("Record type", DimeCommon.TYPE_MEDIA, buff.getPartTypeCode());
        assertEquals("Record type text", "def", buff.getPartTypeText());
    }

    public void testOneBlockOneDataMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.ONEBLOCKONEDATA_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertTrue("Missing data", buff.require(1));
        assertEquals("Data value", 1, buff.getBuffer()[buff.getOffset()]);
        assertFalse("No more parts in message", buff.nextPart());
        assertFalse("No more messages", buff.nextMessage());
    }

    public void testTwoBlockOneData1Message() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.TWOBLOCKONEDATA1_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertTrue("Missing data", buff.require(1));
        assertEquals("Data value", 1, buff.getBuffer()[buff.getOffset()]);
        assertFalse("No more parts in message", buff.nextPart());
        assertFalse("No more messages", buff.nextMessage());
    }

    public void testTwoBlockOneData2Message() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.TWOBLOCKONEDATA2_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertTrue("Missing data", buff.require(1));
        assertEquals("Data value", 1, buff.getBuffer()[buff.getOffset()]);
        assertFalse("No more parts in message", buff.nextPart());
        assertFalse("No more messages", buff.nextMessage());
    }

    public void testOneBlockBadMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.ONEBLOCKBAD_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertTrue("Missing data", buff.require(1));
        try {
            buff.require(2);
            fail();
        } catch (IOException e) {
        }
    }

    public void testTwoBlockTwoPartMessage() throws Exception {
        DimeInputBuffer buff = messageBuffer(TestData.TWOBLOCK_TWOPARTS_MESSAGE);
        assertTrue("Initial message", buff.nextMessage());
        assertTrue("Initial part", buff.nextPart());
        assertTrue("Missing data", buff.require(1));
        int offset = buff.getOffset();
        assertEquals("Data value", 1, buff.getBuffer()[offset++]);
        buff.setOffset(offset);
        assertTrue("Missing data", buff.require(8));
        offset = buff.getOffset();
        for (int i = 0; i < 8; i++) {
            assertEquals("Data value", i + 2, buff.getBuffer()[offset + i]);
        }
        assertTrue("Missing part", buff.nextPart());
        assertFalse("No more messages", buff.nextMessage());
    }
}
TOP

Related Classes of org.jibx.ws.encoding.dime.DimeInTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.