}
@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());
}