|
15 | 15 | */
|
16 | 16 | package uk.co.real_logic.sbe.ir;
|
17 | 17 |
|
18 |
| -import org.junit.Ignore; |
19 | 18 | import org.junit.Test;
|
20 | 19 | import uk.co.real_logic.sbe.PrimitiveType;
|
21 | 20 | import uk.co.real_logic.sbe.xml.IrGenerator;
|
|
33 | 32 | public class GroupWithDataIrTest
|
34 | 33 | {
|
35 | 34 | @Test
|
36 |
| - public void shouldGenerateCorrectIrForVarDataInRepeatingGroup() |
| 35 | + public void shouldGenerateCorrectIrForSingleVarDataInRepeatingGroup() |
37 | 36 | throws Exception
|
38 | 37 | {
|
39 | 38 | final MessageSchema schema = parse(getLocalResource("group-with-data-schema.xml"), ParserOptions.DEFAULT);
|
40 | 39 | final IrGenerator irg = new IrGenerator();
|
41 | 40 | final Ir ir = irg.generate(schema);
|
| 41 | + final List<Token> tokens = ir.getMessage(1); |
42 | 42 |
|
43 | 43 | /* 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; |
50 | 44 |
|
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); |
52 | 51 |
|
53 | 52 | /* 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))); |
57 | 56 |
|
58 | 57 | /* 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")); |
61 | 60 |
|
62 | 61 | /* 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); |
66 | 84 |
|
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); |
70 | 90 |
|
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))); |
73 | 95 |
|
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))); |
77 | 103 | }
|
78 | 104 |
|
79 |
| - @Ignore |
80 | 105 | @Test
|
81 | 106 | public void shouldGenerateCorrectIrForVarDataInNestedRepeatingGroup()
|
82 | 107 | throws Exception
|
83 | 108 | {
|
84 | 109 | final MessageSchema schema = parse(getLocalResource("group-with-data-schema.xml"), ParserOptions.DEFAULT);
|
85 | 110 | final IrGenerator irg = new IrGenerator();
|
86 | 111 | final Ir ir = irg.generate(schema);
|
| 112 | + final List<Token> tokens = ir.getMessage(3); |
87 | 113 |
|
88 | 114 | /* 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; |
92 | 115 |
|
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))); |
94 | 132 |
|
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))); |
96 | 136 | }
|
97 | 137 | }
|
0 commit comments