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

📄 iobuffertest.java

📁 mina是以Java实现的一个开源的网络程序框架
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        try {            original = IoBuffer.allocate(16);            duplicate = original.asReadOnlyBuffer();            duplicate.putString("A very very very very looooooong string",                    Charset.forName("ISO-8859-1").newEncoder());            fail("ReadOnly buffer's can't be expanded");        } catch (ReadOnlyBufferException e) {            // Expected an Exception, signifies test success            assertTrue(true);        }    }    @Test    public void testGetUnsigned() throws Exception {        IoBuffer buf = IoBuffer.allocate(16);        buf.put((byte) 0xA4);        buf.put((byte) 0xD0);        buf.put((byte) 0xB3);        buf.put((byte) 0xCD);        buf.flip();        buf.order(ByteOrder.LITTLE_ENDIAN);        buf.mark();        assertEquals(0xA4, buf.getUnsigned());        buf.reset();        assertEquals(0xD0A4, buf.getUnsignedShort());        buf.reset();        assertEquals(0xCDB3D0A4L, buf.getUnsignedInt());    }    @Test    public void testIndexOf() throws Exception {        boolean direct = false;        for (int i = 0; i < 2; i++, direct = !direct) {            IoBuffer buf = IoBuffer.allocate(16, direct);            buf.put((byte) 0x1);            buf.put((byte) 0x2);            buf.put((byte) 0x3);            buf.put((byte) 0x4);            buf.put((byte) 0x1);            buf.put((byte) 0x2);            buf.put((byte) 0x3);            buf.put((byte) 0x4);            buf.position(2);            buf.limit(5);            assertEquals(4, buf.indexOf((byte) 0x1));            assertEquals(-1, buf.indexOf((byte) 0x2));            assertEquals(2, buf.indexOf((byte) 0x3));            assertEquals(3, buf.indexOf((byte) 0x4));        }    }    // We need an enum with 64 values    private static enum TestEnum {        E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, E24, E25, E26, E27, E28, E29, E30, E31, E32, E33, E34, E35, E36, E37, E38, E39, E40, E41, E42, E43, E44, E45, E46, E77, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59, E60, E61, E62, E63, E64    }    private static enum TooBigEnum {        E1, E2, E3, E4, E5, E6, E7, E8, E9, E10, E11, E12, E13, E14, E15, E16, E17, E18, E19, E20, E21, E22, E23, E24, E25, E26, E27, E28, E29, E30, E31, E32, E33, E34, E35, E36, E37, E38, E39, E40, E41, E42, E43, E44, E45, E46, E77, E48, E49, E50, E51, E52, E53, E54, E55, E56, E57, E58, E59, E60, E61, E62, E63, E64, E65    }    @Test    public void testPutEnumSet() {        IoBuffer buf = IoBuffer.allocate(8);        // Test empty set        buf.putEnumSet(EnumSet.noneOf(TestEnum.class));        buf.flip();        assertEquals(0, buf.get());        buf.clear();        buf.putEnumSetShort(EnumSet.noneOf(TestEnum.class));        buf.flip();        assertEquals(0, buf.getShort());        buf.clear();        buf.putEnumSetInt(EnumSet.noneOf(TestEnum.class));        buf.flip();        assertEquals(0, buf.getInt());        buf.clear();        buf.putEnumSetLong(EnumSet.noneOf(TestEnum.class));        buf.flip();        assertEquals(0, buf.getLong());        // Test complete set        buf.clear();        buf.putEnumSet(EnumSet.range(TestEnum.E1, TestEnum.E8));        buf.flip();        assertEquals((byte) -1, buf.get());        buf.clear();        buf.putEnumSetShort(EnumSet.range(TestEnum.E1, TestEnum.E16));        buf.flip();        assertEquals((short) -1, buf.getShort());        buf.clear();        buf.putEnumSetInt(EnumSet.range(TestEnum.E1, TestEnum.E32));        buf.flip();        assertEquals(-1, buf.getInt());        buf.clear();        buf.putEnumSetLong(EnumSet.allOf(TestEnum.class));        buf.flip();        assertEquals(-1L, buf.getLong());        // Test high bit set        buf.clear();        buf.putEnumSet(EnumSet.of(TestEnum.E8));        buf.flip();        assertEquals(Byte.MIN_VALUE, buf.get());        buf.clear();        buf.putEnumSetShort(EnumSet.of(TestEnum.E16));        buf.flip();        assertEquals(Short.MIN_VALUE, buf.getShort());        buf.clear();        buf.putEnumSetInt(EnumSet.of(TestEnum.E32));        buf.flip();        assertEquals(Integer.MIN_VALUE, buf.getInt());        buf.clear();        buf.putEnumSetLong(EnumSet.of(TestEnum.E64));        buf.flip();        assertEquals(Long.MIN_VALUE, buf.getLong());        // Test high low bits set        buf.clear();        buf.putEnumSet(EnumSet.of(TestEnum.E1, TestEnum.E8));        buf.flip();        assertEquals(Byte.MIN_VALUE + 1, buf.get());        buf.clear();        buf.putEnumSetShort(EnumSet.of(TestEnum.E1, TestEnum.E16));        buf.flip();        assertEquals(Short.MIN_VALUE + 1, buf.getShort());        buf.clear();        buf.putEnumSetInt(EnumSet.of(TestEnum.E1, TestEnum.E32));        buf.flip();        assertEquals(Integer.MIN_VALUE + 1, buf.getInt());        buf.clear();        buf.putEnumSetLong(EnumSet.of(TestEnum.E1, TestEnum.E64));        buf.flip();        assertEquals(Long.MIN_VALUE + 1, buf.getLong());    }    @Test    public void testGetEnumSet() {        IoBuffer buf = IoBuffer.allocate(8);        // Test empty set        buf.put((byte) 0);        buf.flip();        assertEquals(EnumSet.noneOf(TestEnum.class), buf                .getEnumSet(TestEnum.class));        buf.clear();        buf.putShort((short) 0);        buf.flip();        assertEquals(EnumSet.noneOf(TestEnum.class), buf                .getEnumSet(TestEnum.class));        buf.clear();        buf.putInt(0);        buf.flip();        assertEquals(EnumSet.noneOf(TestEnum.class), buf                .getEnumSet(TestEnum.class));        buf.clear();        buf.putLong(0L);        buf.flip();        assertEquals(EnumSet.noneOf(TestEnum.class), buf                .getEnumSet(TestEnum.class));        // Test complete set        buf.clear();        buf.put((byte) -1);        buf.flip();        assertEquals(EnumSet.range(TestEnum.E1, TestEnum.E8), buf                .getEnumSet(TestEnum.class));        buf.clear();        buf.putShort((short) -1);        buf.flip();        assertEquals(EnumSet.range(TestEnum.E1, TestEnum.E16), buf                .getEnumSetShort(TestEnum.class));        buf.clear();        buf.putInt(-1);        buf.flip();        assertEquals(EnumSet.range(TestEnum.E1, TestEnum.E32), buf                .getEnumSetInt(TestEnum.class));        buf.clear();        buf.putLong(-1L);        buf.flip();        assertEquals(EnumSet.allOf(TestEnum.class), buf                .getEnumSetLong(TestEnum.class));        // Test high bit set        buf.clear();        buf.put(Byte.MIN_VALUE);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E8), buf.getEnumSet(TestEnum.class));        buf.clear();        buf.putShort(Short.MIN_VALUE);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E16), buf                .getEnumSetShort(TestEnum.class));        buf.clear();        buf.putInt(Integer.MIN_VALUE);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E32), buf                .getEnumSetInt(TestEnum.class));        buf.clear();        buf.putLong(Long.MIN_VALUE);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E64), buf                .getEnumSetLong(TestEnum.class));        // Test high low bits set        buf.clear();        byte b = Byte.MIN_VALUE + 1;        buf.put(b);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E1, TestEnum.E8), buf                .getEnumSet(TestEnum.class));        buf.clear();        short s = Short.MIN_VALUE + 1;        buf.putShort(s);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E1, TestEnum.E16), buf                .getEnumSetShort(TestEnum.class));        buf.clear();        buf.putInt(Integer.MIN_VALUE + 1);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E1, TestEnum.E32), buf                .getEnumSetInt(TestEnum.class));        buf.clear();        buf.putLong(Long.MIN_VALUE + 1);        buf.flip();        assertEquals(EnumSet.of(TestEnum.E1, TestEnum.E64), buf                .getEnumSetLong(TestEnum.class));    }    @Test    public void testBitVectorOverFlow() {        IoBuffer buf = IoBuffer.allocate(8);        try {            buf.putEnumSet(EnumSet.of(TestEnum.E9));            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException e) {            // Expected an Exception, signifies test success            assertTrue(true);        }        try {            buf.putEnumSetShort(EnumSet.of(TestEnum.E17));            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException e) {            // Expected an Exception, signifies test success            assertTrue(true);        }        try {            buf.putEnumSetInt(EnumSet.of(TestEnum.E33));            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException e) {            // Expected an Exception, signifies test success            assertTrue(true);        }        try {            buf.putEnumSetLong(EnumSet.of(TooBigEnum.E65));            fail("Should have thrown IllegalArgumentException");        } catch (IllegalArgumentException e) {            // Expected an Exception, signifies test success            assertTrue(true);        }    }    @Test    public void testGetPutEnum() {        IoBuffer buf = IoBuffer.allocate(4);        buf.putEnum(TestEnum.E64);        buf.flip();        assertEquals(TestEnum.E64, buf.getEnum(TestEnum.class));        buf.clear();        buf.putEnumShort(TestEnum.E64);        buf.flip();        assertEquals(TestEnum.E64, buf.getEnumShort(TestEnum.class));        buf.clear();        buf.putEnumInt(TestEnum.E64);        buf.flip();        assertEquals(TestEnum.E64, buf.getEnumInt(TestEnum.class));    }    @Test    public void testGetMediumInt() {        IoBuffer buf = IoBuffer.allocate(3);        buf.put((byte) 0x01);        buf.put((byte) 0x02);        buf.put((byte) 0x03);        assertEquals(3, buf.position());        buf.flip();        assertEquals(0x010203, buf.getMediumInt());        assertEquals(0x010203, buf.getMediumInt(0));        buf.flip();        assertEquals(0x010203, buf.getUnsignedMediumInt());        assertEquals(0x010203, buf.getUnsignedMediumInt(0));        buf.flip();        assertEquals(0x010203, buf.getUnsignedMediumInt());        buf.flip().order(ByteOrder.LITTLE_ENDIAN);        assertEquals(0x030201, buf.getMediumInt());        assertEquals(0x030201, buf.getMediumInt(0));        // Test max medium int        buf.flip().order(ByteOrder.BIG_ENDIAN);        buf.put((byte) 0x7f);        buf.put((byte) 0xff);        buf.put((byte) 0xff);        buf.flip();        assertEquals(0x7fffff, buf.getMediumInt());        assertEquals(0x7fffff, buf.getMediumInt(0));        // Test negative number        buf.flip().order(ByteOrder.BIG_ENDIAN);        buf.put((byte) 0xff);        buf.put((byte) 0x02);        buf.put((byte) 0x03);        buf.flip();        assertEquals(0xffff0203, buf.getMediumInt());        assertEquals(0xffff0203, buf.getMediumInt(0));        buf.flip();        assertEquals(0x00ff0203, buf.getUnsignedMediumInt());        assertEquals(0x00ff0203, buf.getUnsignedMediumInt(0));    }    @Test    public void testPutMediumInt() {        IoBuffer buf = IoBuffer.allocate(3);        checkMediumInt(buf, 0);        checkMediumInt(buf, 1);        checkMediumInt(buf, -1);        checkMediumInt(buf, 0x7fffff);    }    private void checkMediumInt(IoBuffer buf, int x) {        buf.putMediumInt(x);        assertEquals(3, buf.position());        buf.flip();        assertEquals(x, buf.getMediumInt());        assertEquals(3, buf.position());        buf.putMediumInt(0, x);        assertEquals(3, buf.position());        assertEquals(x, buf.getMediumInt(0));        buf.flip();    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -