Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4a7ff3

Browse files
committed
[Java]: tests to assert data in repeating groups for generated IR
1 parent 470e186 commit c4a7ff3

File tree

2 files changed

+85
-33
lines changed

2 files changed

+85
-33
lines changed

sbe-tool/src/test/java/uk/co/real_logic/sbe/ir/GroupWithDataIrTest.java

Lines changed: 71 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
*/
1616
package uk.co.real_logic.sbe.ir;
1717

18-
import org.junit.Ignore;
1918
import org.junit.Test;
2019
import uk.co.real_logic.sbe.PrimitiveType;
2120
import uk.co.real_logic.sbe.xml.IrGenerator;
@@ -33,65 +32,106 @@
3332
public class GroupWithDataIrTest
3433
{
3534
@Test
36-
public void shouldGenerateCorrectIrForVarDataInRepeatingGroup()
35+
public void shouldGenerateCorrectIrForSingleVarDataInRepeatingGroup()
3736
throws Exception
3837
{
3938
final MessageSchema schema = parse(getLocalResource("group-with-data-schema.xml"), ParserOptions.DEFAULT);
4039
final IrGenerator irg = new IrGenerator();
4140
final Ir ir = irg.generate(schema);
41+
final List<Token> tokens = ir.getMessage(1);
4242

4343
/* 0=msg, 1=field, 2=enc, 3=fieldend, 4=group, 5=comp, 6=enc, 7=enc, 8=compend, ... */
44-
final int groupIdx = 4;
45-
final int dimensionsCompIdx = 5;
46-
final int dimensionsBlEncIdx = 6;
47-
final int varDataFieldIdx = 15;
48-
final int lengthEncIdx = 17;
49-
final int dataEncIdx = 18;
5044

51-
final List<Token> tokens = ir.getMessage(1);
45+
final Token groupToken = tokens.get(4);
46+
final Token dimensionsCompToken = tokens.get(5);
47+
final Token dimensionsBlEncToken = tokens.get(6);
48+
final Token varDataFieldToken = tokens.get(15);
49+
final Token lengthEncToken = tokens.get(17);
50+
final Token dataEncToken = tokens.get(18);
5251

5352
/* assert on the group token */
54-
assertThat(tokens.get(groupIdx).signal(), is(Signal.BEGIN_GROUP));
55-
assertThat(tokens.get(groupIdx).name(), is("Entries"));
56-
assertThat(valueOf(tokens.get(groupIdx).id()), is(valueOf(2)));
53+
assertThat(groupToken.signal(), is(Signal.BEGIN_GROUP));
54+
assertThat(groupToken.name(), is("Entries"));
55+
assertThat(valueOf(groupToken.id()), is(valueOf(2)));
5756

5857
/* assert on the comp token for dimensions */
59-
assertThat(tokens.get(dimensionsCompIdx).signal(), is(Signal.BEGIN_COMPOSITE));
60-
assertThat(tokens.get(dimensionsCompIdx).name(), is("groupSizeEncoding"));
58+
assertThat(dimensionsCompToken.signal(), is(Signal.BEGIN_COMPOSITE));
59+
assertThat(dimensionsCompToken.name(), is("groupSizeEncoding"));
6160

6261
/* assert on the enc token for dimensions blockLength */
63-
assertThat(tokens.get(dimensionsBlEncIdx).signal(), is(Signal.ENCODING));
64-
assertThat(tokens.get(dimensionsBlEncIdx).name(), is("blockLength"));
65-
// TODO: value is variable as var data is present
62+
assertThat(dimensionsBlEncToken.signal(), is(Signal.ENCODING));
63+
assertThat(dimensionsBlEncToken.name(), is("blockLength"));
64+
65+
assertThat(varDataFieldToken.signal(), is(Signal.BEGIN_VAR_DATA));
66+
assertThat(varDataFieldToken.name(), is("varDataField"));
67+
assertThat(valueOf(varDataFieldToken.id()), is(valueOf(5)));
68+
69+
assertThat(lengthEncToken.signal(), is(Signal.ENCODING));
70+
assertThat(lengthEncToken.encoding().primitiveType(), is(PrimitiveType.UINT8));
71+
72+
assertThat(dataEncToken.signal(), is(Signal.ENCODING));
73+
assertThat(dataEncToken.encoding().primitiveType(), is(PrimitiveType.CHAR));
74+
}
75+
76+
@Test
77+
public void shouldGenerateCorrectIrForMultipleVarDataInRepeatingGroup()
78+
throws Exception
79+
{
80+
final MessageSchema schema = parse(getLocalResource("group-with-data-schema.xml"), ParserOptions.DEFAULT);
81+
final IrGenerator irg = new IrGenerator();
82+
final Ir ir = irg.generate(schema);
83+
final List<Token> tokens = ir.getMessage(2);
6684

67-
assertThat(tokens.get(varDataFieldIdx).signal(), is(Signal.BEGIN_VAR_DATA));
68-
assertThat(tokens.get(varDataFieldIdx).name(), is("varDataField"));
69-
assertThat(valueOf(tokens.get(varDataFieldIdx).id()), is(valueOf(5)));
85+
/* 0=msg, 1=field, 2=enc, 3=fieldend, 4=group, 5=comp, 6=enc, 7=enc, 8=compend, ... */
86+
87+
final Token groupToken = tokens.get(4);
88+
final Token varDataField1Token = tokens.get(15);
89+
final Token varDataField2Token = tokens.get(21);
7090

71-
assertThat(tokens.get(lengthEncIdx).signal(), is(Signal.ENCODING));
72-
assertThat(tokens.get(lengthEncIdx).encoding().primitiveType(), is(PrimitiveType.UINT8));
91+
/* assert on the group token */
92+
assertThat(groupToken.signal(), is(Signal.BEGIN_GROUP));
93+
assertThat(groupToken.name(), is("Entries"));
94+
assertThat(valueOf(groupToken.id()), is(valueOf(2)));
7395

74-
/* assert the group node has the right IrId and xRefIrId, etc. */
75-
assertThat(tokens.get(dataEncIdx).signal(), is(Signal.ENCODING));
76-
assertThat(tokens.get(dataEncIdx).encoding().primitiveType(), is(PrimitiveType.CHAR));
96+
assertThat(varDataField1Token.signal(), is(Signal.BEGIN_VAR_DATA));
97+
assertThat(varDataField1Token.name(), is("varDataField1"));
98+
assertThat(valueOf(varDataField1Token.id()), is(valueOf(5)));
99+
100+
assertThat(varDataField2Token.signal(), is(Signal.BEGIN_VAR_DATA));
101+
assertThat(varDataField2Token.name(), is("varDataField2"));
102+
assertThat(valueOf(varDataField2Token.id()), is(valueOf(6)));
77103
}
78104

79-
@Ignore
80105
@Test
81106
public void shouldGenerateCorrectIrForVarDataInNestedRepeatingGroup()
82107
throws Exception
83108
{
84109
final MessageSchema schema = parse(getLocalResource("group-with-data-schema.xml"), ParserOptions.DEFAULT);
85110
final IrGenerator irg = new IrGenerator();
86111
final Ir ir = irg.generate(schema);
112+
final List<Token> tokens = ir.getMessage(3);
87113

88114
/* 0=msg, 1=field, 2=enc, 3=fieldend, 4=group, 5=comp, 6=enc, 7=enc, 8=compend, ... */
89-
final int groupIdx = 4;
90-
final int dimensionsCompIdx = 5;
91-
final int dimensionsBlEncIdx = 6;
92115

93-
final List<Token> tokens = ir.getMessage(2);
116+
final Token groupToken = tokens.get(4);
117+
final Token nestedGroupToken = tokens.get(12);
118+
final Token varDataFieldNestedToken = tokens.get(20);
119+
final Token varDataFieldToken = tokens.get(27);
120+
121+
assertThat(groupToken.signal(), is(Signal.BEGIN_GROUP));
122+
assertThat(groupToken.name(), is("Entries"));
123+
assertThat(valueOf(groupToken.id()), is(valueOf(2)));
124+
125+
assertThat(nestedGroupToken.signal(), is(Signal.BEGIN_GROUP));
126+
assertThat(nestedGroupToken.name(), is("NestedEntries"));
127+
assertThat(valueOf(nestedGroupToken.id()), is(valueOf(4)));
128+
129+
assertThat(varDataFieldNestedToken.signal(), is(Signal.BEGIN_VAR_DATA));
130+
assertThat(varDataFieldNestedToken.name(), is("varDataFieldNested"));
131+
assertThat(valueOf(varDataFieldNestedToken.id()), is(valueOf(6)));
94132

95-
// TODO: complete
133+
assertThat(varDataFieldToken.signal(), is(Signal.BEGIN_VAR_DATA));
134+
assertThat(varDataFieldToken.name(), is("varDataField"));
135+
assertThat(valueOf(varDataFieldToken.id()), is(valueOf(7)));
96136
}
97137
}

sbe-tool/src/test/resources/group-with-data-schema.xml

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,27 @@
2121
<type name="varData" primitiveType="char" semanticType="data"/>
2222
</composite>
2323
</types>
24-
<message name="TestMessage1" id="1" description="TestMessage" blockLength="16">
24+
25+
<message name="TestMessage1" id="1" description="Group with single vardata" blockLength="16">
2526
<field name="Tag1" id="1" type="uint32" semanticType="int"/>
2627
<group name="Entries" id="2" dimensionType="groupSizeEncoding">
2728
<field name="TagGroup1" id="3" type="Symbol"/>
2829
<field name="TagGroup2" id="4" type="int64" semanticType="int"/>
2930
<data type="varDataEncoding" name="varDataField" id="5"/>
3031
</group>
3132
</message>
32-
<message name="TestMessage2" id="2" description="TestMessage2" blockLength="16">
33+
34+
<message name="TestMessage2" id="2" description="Group with multiple vardata" blockLength="16">
35+
<field name="Tag1" id="1" type="uint32" semanticType="int"/>
36+
<group name="Entries" id="2" dimensionType="groupSizeEncoding">
37+
<field name="TagGroup1" id="3" type="Symbol"/>
38+
<field name="TagGroup2" id="4" type="int64" semanticType="int"/>
39+
<data type="varDataEncoding" name="varDataField1" id="5"/>
40+
<data type="varDataEncoding" name="varDataField2" id="6"/>
41+
</group>
42+
</message>
43+
44+
<message name="TestMessage3" id="3" description="Nested group with vardata" blockLength="16">
3345
<field name="Tag1" id="1" type="uint32" semanticType="int"/>
3446
<group name="Entries" id="2" dimensionType="groupSizeEncoding">
3547
<field name="TagGroup1" id="3" type="Symbol"/>

0 commit comments

Comments
 (0)