@Test public void shouldCalculateCompositeSizeWithOffsetsSpecified() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "composite-offsets-schema.xml"), ParserOptions.DEFAULT); final CompositeType header = schema.messageHeader(); assertThat(valueOf(header.encodedLength()), is(valueOf(12))); }
@Test public void shouldCalculateDimensionSizeWithOffsetsSpecified() throws Exception { final MessageSchema schema = parse(TestUtil.getLocalResource( "composite-offsets-schema.xml"), ParserOptions.DEFAULT); final CompositeType dimensions = schema.getMessage(1).fields().get(0).dimensionType(); assertThat(valueOf(dimensions.encodedLength()), is(valueOf(8))); } }
@Test public void shouldHandleDecimalCompositeType() throws Exception { final String testXmlString = "<types>" + "<composite name=\"decimal\">" + " <type name=\"mantissa\" primitiveType=\"int64\"/>" + " <type name=\"exponent\" primitiveType=\"int8\"/>" + "</composite>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/composite", testXmlString); final CompositeType decimal = (CompositeType)map.get("decimal"); assertThat(decimal.name(), is("decimal")); final EncodedDataType mantissa = (EncodedDataType)decimal.getType("mantissa"); final EncodedDataType exponent = (EncodedDataType)decimal.getType("exponent"); assertThat(mantissa.primitiveType(), is(PrimitiveType.INT64)); assertThat(exponent.primitiveType(), is(PrimitiveType.INT8)); assertThat(decimal.encodedLength(), is(9)); }
assertThat(second.name(), is("second")); assertThat(nestedCompositeType.encodedLength(), is(16)); assertThat(compositeType.encodedLength(), is(22));
@Test public void shouldHandleDecimal64CompositeType() throws Exception { final String testXmlString = "<types>" + "<composite name=\"decimal64\">" + " <type name=\"mantissa\" primitiveType=\"int64\"/>" + " <type name=\"exponent\" primitiveType=\"int8\" presence=\"constant\">-2</type>" + "</composite>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/composite", testXmlString); final CompositeType decimal64 = (CompositeType)map.get("decimal64"); assertThat(decimal64.name(), is("decimal64")); final EncodedDataType mantissa = (EncodedDataType)decimal64.getType("mantissa"); final EncodedDataType exponent = (EncodedDataType)decimal64.getType("exponent"); assertThat(mantissa.primitiveType(), is(PrimitiveType.INT64)); assertThat(exponent.primitiveType(), is(PrimitiveType.INT8)); assertThat(exponent.presence(), is(Presence.CONSTANT)); assertThat(exponent.constVal(), is(PrimitiveValue.parse("-2", PrimitiveType.INT8))); assertThat(decimal64.encodedLength(), is(8)); }
@Test public void shouldHandleDecimal32CompositeType() throws Exception { final String testXmlString = "<types>" + "<composite name=\"decimal32\">" + " <type name=\"mantissa\" primitiveType=\"int32\"/>" + " <type name=\"exponent\" primitiveType=\"int8\" presence=\"constant\">-2</type>" + "</composite>" + "</types>"; final Map<String, Type> map = parseTestXmlWithMap("/types/composite", testXmlString); final CompositeType decimal32 = (CompositeType)map.get("decimal32"); assertThat(decimal32.name(), is("decimal32")); final EncodedDataType mantissa = (EncodedDataType)decimal32.getType("mantissa"); final EncodedDataType exponent = (EncodedDataType)decimal32.getType("exponent"); assertThat(mantissa.primitiveType(), is(PrimitiveType.INT32)); assertThat(exponent.primitiveType(), is(PrimitiveType.INT8)); assertThat(exponent.presence(), is(Presence.CONSTANT)); assertThat(exponent.constVal(), is(PrimitiveValue.parse("-2", PrimitiveType.INT8))); assertThat(decimal32.encodedLength(), is(4)); }
.referencedName(type.referencedName()) .offset(currOffset) .size(type.encodedLength()) .version(type.sinceVersion()) .deprecated(type.deprecated())
private void add(final CompositeType type, final int currOffset, final Field field) { final Token.Builder builder = new Token.Builder() .signal(Signal.BEGIN_COMPOSITE) .name(type.name()) .offset(currOffset) .size(type.encodedLength()) .encoding(new Encoding.Builder() .semanticType(semanticTypeOf(type, field)) .build()); if (field != null) { builder.version(field.sinceVersion()); } tokenList.add(builder.build()); int offset = 0; for (final EncodedDataType edt : type.getTypeList()) { if (edt.offsetAttribute() != -1) { offset = edt.offsetAttribute(); } add(edt, offset, field); offset += edt.encodedLength(); } tokenList.add(builder.signal(Signal.END_COMPOSITE).build()); }
.referencedName(type.referencedName()) .offset(currOffset) .size(type.encodedLength()) .version(type.sinceVersion()) .deprecated(type.deprecated())
.referencedName(type.referencedName()) .offset(currOffset) .size(type.encodedLength()) .version(type.sinceVersion()) .deprecated(type.deprecated())