Skip to content

Commit 15977df

Browse files
committed
small fixes and test improvements
1 parent 2f92a2d commit 15977df

File tree

5 files changed

+31
-5
lines changed

5 files changed

+31
-5
lines changed

jbbp/src/main/java/com/igormaznitsa/jbbp/utils/JBBPTextWriter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1896,7 +1896,10 @@ protected void onFieldFloat(final Object obj, final Field field, final Bin annot
18961896
protected void onFieldString(final Object obj, final Field field, final Bin annotation, final String value) {
18971897
try {
18981898
ensureValueMode();
1899+
final String prefix = prefixValue;
1900+
prefixValue = "";
18991901
printValueString(value == null ? "<NULL>" : '\"'+value+'\"');
1902+
prefixValue = prefix;
19001903
if (this.arrayCounter == 0) {
19011904
Comment(makeFieldDescription(field, annotation));
19021905
}

jbbp/src/test/java/com/igormaznitsa/jbbp/compiler/conversion/RandomAutoTest.java

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

jbbp/src/test/java/com/igormaznitsa/jbbp/it/SNAParsingTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
package com.igormaznitsa.jbbp.it;
1818

1919
import com.igormaznitsa.jbbp.JBBPParser;
20-
import com.igormaznitsa.jbbp.io.JBBPByteOrder;
2120
import com.igormaznitsa.jbbp.io.JBBPOut;
2221
import com.igormaznitsa.jbbp.mapper.Bin;
2322
import com.igormaznitsa.jbbp.mapper.BinType;

jbbp/src/test/java/com/igormaznitsa/jbbp/utils/JBBPTextWriterTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -726,6 +726,10 @@ class SomeClass {
726726
long d;
727727
@Bin(outOrder = 5, comment = "some array")
728728
byte[] arr = new byte[128];
729+
@Bin(outOrder = 6, comment = "some string")
730+
String str = "Hello String";
731+
@Bin(outOrder = 7, comment = "some string array")
732+
String [] strs = new String[] {"Hello", null, "World"};
729733
}
730734

731735
final SomeClass cl = new SomeClass();

jbbp/src/test/resources/com/igormaznitsa/jbbp/utils/testwriterbin1.txt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,14 @@
1919
~--------------------------------------------------------------------------------
2020
; END ARRAY : arr, some array
2121
~--------------------------------------------------------------------------------
22+
."Hello String"; str, some string
23+
~--------------------------------------------------------------------------------
24+
; START ARRAY : strs, some string array OF String [3]
25+
~--------------------------------------------------------------------------------
26+
."Hello",<NULL>,"World"
27+
~--------------------------------------------------------------------------------
28+
; END ARRAY : strs, some string array
29+
~--------------------------------------------------------------------------------
2230
~--------------------------------------------------------------------------------
2331
; END : some class
2432
~--------------------------------------------------------------------------------

0 commit comments

Comments
 (0)