@@ -46,13 +46,15 @@ static class Result {
4646 final int fieldsNumber ;
4747 final int structNumber ;
4848 final int booleanDataItemCounter ;
49+ final long typeFlags ;
4950
50- Result (final String script , final int bitLength , final int fieldsNumber , final int structNumber , final int booleanDtaItemCounter ) {
51+ Result (final String script , final int bitLength , final int fieldsNumber , final int structNumber , final int booleanDtaItemCounter , final long typeFlags ) {
5152 this .script = script ;
5253 this .bitLength = bitLength ;
5354 this .fieldsNumber = fieldsNumber ;
5455 this .structNumber = structNumber ;
5556 this .booleanDataItemCounter = booleanDtaItemCounter ;
57+ this .typeFlags = typeFlags ;
5658 }
5759 }
5860
@@ -101,6 +103,8 @@ Result generate(final int items, final boolean generateNames) {
101103
102104 int activeStructCounter = 0 ;
103105
106+ long typeFlags = 0 ;
107+
104108 for (int i = 0 ; i < items ; i ++) {
105109
106110 if (RND .nextInt (50 ) > 48 ) {
@@ -116,7 +120,9 @@ Result generate(final int items, final boolean generateNames) {
116120 final StructLen len = counterStack .remove (0 );
117121 counterStack .get (0 ).add (len .make ());
118122 } else {
119- switch (RND .nextInt (25 )) {
123+ final int rndType = RND .nextInt (25 );
124+ typeFlags |= (1 << rndType );
125+ switch (rndType ) {
120126 case 0 : { // STRUCT
121127 builder .Struct (generateNames ? makeRndName () : null );
122128 counterStack .add (0 , new StructLen ());
@@ -221,7 +227,7 @@ Result generate(final int items, final boolean generateNames) {
221227 fieldsTotal ++;
222228 }
223229 break ;
224- case 14 : { // SHORT_ARRAY
230+ case 14 : { // USHORT_ARRAY
225231 final int arrayLen = makeArrayLengthNumber ();
226232 builder .UShortArray (generateNames ? makeRndName () : null , String .valueOf (arrayLen ));
227233 counterStack .get (0 ).add (16 * arrayLen );
@@ -305,7 +311,7 @@ Result generate(final int items, final boolean generateNames) {
305311 counterStack .get (0 ).add (len .make ());
306312 }
307313
308- return new Result (builder .End (), counterStack .get (0 ).make (), fieldsTotal , structsTotal , booleanDataItems );
314+ return new Result (builder .End (), counterStack .get (0 ).make (), fieldsTotal , structsTotal , booleanDataItems , typeFlags );
309315 }
310316
311317 private byte [] makeRandomDataArray (final int bitLength ) {
@@ -320,12 +326,16 @@ private byte[] makeRandomDataArray(final int bitLength) {
320326 public void testCompileParseAndWriteArray () throws Exception {
321327 int testIndex = 1 ;
322328
329+ long generatedFields = 0L ;
330+
323331 for (int i = 5 ; i < 500 ; i += 3 ) {
324332 Result result ;
325333 do {
326334 result = generate (i , true );
327335 } while (result .bitLength > 10000000 );
328336
337+ generatedFields |= result .typeFlags ;
338+
329339 System .out .println (String .format ("Test %d, data bit length = %d, fields = %d, sructs = %d" , testIndex , result .bitLength , result .fieldsNumber , result .structNumber ));
330340
331341 final byte [] testData = makeRandomDataArray (result .bitLength );
@@ -335,6 +345,8 @@ public void testCompileParseAndWriteArray() throws Exception {
335345
336346 testIndex ++;
337347 }
348+
349+ assertEquals (0x1FFFFFFL , generatedFields , "All field types must be presented" );
338350 }
339351
340352
0 commit comments