public static int frameType(final MutableDirectBuffer buffer, final int termOffset) { return buffer.getShort(FrameDescriptor.typeOffset(termOffset), LITTLE_ENDIAN) & 0xFFFF; } }
@Test public void shouldSetBitInShort() { final int bufferIndex = 8; int total = 0; for (int i = 0; i < 16; i++) { short bits = buffer.getShort(bufferIndex, BYTE_ORDER); bits = (short)(bits | (1 << i)); buffer.putShort(bufferIndex, bits, BYTE_ORDER); total += (1 << i); assertThat(buffer.getShort(bufferIndex, BYTE_ORDER), is((short)total)); } }
@Test public void shouldGenerateMessageHeaderDecoderStub() throws Exception { final int bufferOffset = 64; final int templateIdOffset = 2; final short templateId = (short)7; final String fqClassName = ir.applicableNamespace() + "." + MESSAGE_HEADER_DECODER_TYPE; when(mockBuffer.getShort(bufferOffset + templateIdOffset, BYTE_ORDER)).thenReturn(templateId); final JavaGenerator generator = generator(); generator.generateTypeStubs(); generator.generateMessageHeaderStub(); final Class<?> clazz = compile(fqClassName); assertNotNull(clazz); final Object flyweight = clazz.getConstructor().newInstance(); final Method method = flyweight.getClass().getDeclaredMethod("wrap", READ_ONLY_BUFFER_CLASS, int.class); method.invoke(flyweight, mockBuffer, bufferOffset); final Integer result = (Integer)clazz.getDeclaredMethod("templateId").invoke(flyweight); assertThat(result, is((int)templateId)); }
@Test public void shouldGenerateMessageHeaderStub() throws Exception { final int bufferOffset = 64; final int templateIdOffset = 2; final short templateId = (short)7; final int blockLength = 32; final String fqClassName = ir.applicableNamespace() + "." + MESSAGE_HEADER_ENCODER_TYPE; when(mockBuffer.getShort(bufferOffset + templateIdOffset, BYTE_ORDER)).thenReturn(templateId); final JavaGenerator generator = generator(); generator.generateTypeStubs(); generator.generateMessageHeaderStub(); final Class<?> clazz = compile(fqClassName); assertNotNull(clazz); final Object flyweight = clazz.getConstructor().newInstance(); final Method method = flyweight.getClass().getDeclaredMethod("wrap", BUFFER_CLASS, int.class); method.invoke(flyweight, mockBuffer, bufferOffset); clazz.getDeclaredMethod("blockLength", int.class).invoke(flyweight, blockLength); verify(mockBuffer).putShort(bufferOffset, (short)blockLength, BYTE_ORDER); }
@Test public void shouldGenerateCompositeEncoder() throws Exception { final int bufferOffset = 64; final int capacityFieldOffset = bufferOffset; final int numCylindersOffset = bufferOffset + 2; final int expectedEngineCapacity = 2000; final int manufacturerCodeOffset = bufferOffset + 3; final byte[] manufacturerCode = { 'A', 'B', 'C' }; final String className = "EngineEncoder"; final String fqClassName = ir.applicableNamespace() + "." + className; when(mockBuffer.getShort(capacityFieldOffset, BYTE_ORDER)) .thenReturn((short)expectedEngineCapacity); generateTypeStubs(); final Class<?> clazz = compile(fqClassName); assertNotNull(clazz); final Object flyweight = clazz.getConstructor().newInstance(); wrap(bufferOffset, flyweight, mockBuffer, BUFFER_CLASS); final short numCylinders = (short)4; clazz.getDeclaredMethod("numCylinders", short.class).invoke(flyweight, numCylinders); clazz.getDeclaredMethod("putManufacturerCode", byte[].class, int.class) .invoke(flyweight, manufacturerCode, 0); verify(mockBuffer).putByte(numCylindersOffset, (byte)numCylinders); verify(mockBuffer).putBytes(manufacturerCodeOffset, manufacturerCode, 0, manufacturerCode.length); }
@Test public void shouldGenerateCompositeDecoder() throws Exception { final int bufferOffset = 64; final int capacityFieldOffset = bufferOffset; final int expectedEngineCapacity = 2000; final int expectedMaxRpm = 9000; final String className = "EngineDecoder"; final String fqClassName = ir.applicableNamespace() + "." + className; when(mockBuffer.getShort(capacityFieldOffset, BYTE_ORDER)) .thenReturn((short)expectedEngineCapacity); generateTypeStubs(); final Class<?> clazz = compile(fqClassName); assertNotNull(clazz); final Object flyweight = clazz.getConstructor().newInstance(); wrap(bufferOffset, flyweight, mockBuffer, READ_ONLY_BUFFER_CLASS); final int capacityResult = getCapacity(flyweight); assertThat(capacityResult, is(expectedEngineCapacity)); final int maxRpmResult = getInt(flyweight, "maxRpm"); assertThat(maxRpmResult, is(expectedMaxRpm)); }
public static int frameType(final MutableDirectBuffer buffer, final int termOffset) { return buffer.getShort(FrameDescriptor.typeOffset(termOffset), LITTLE_ENDIAN) & 0xFFFF; } }