diff --git a/spec/java/src/io/kaitai/struct/spec/TestDebug0.java b/spec/java/src/io/kaitai/struct/spec/TestDebug0.java index a133e6964..67dafe6c5 100644 --- a/spec/java/src/io/kaitai/struct/spec/TestDebug0.java +++ b/spec/java/src/io/kaitai/struct/spec/TestDebug0.java @@ -1,5 +1,8 @@ package io.kaitai.struct.spec; +import io.kaitai.struct.ArraySpan; +import io.kaitai.struct.PositionInfo; +import io.kaitai.struct.Span; import io.kaitai.struct.testformats.Debug0; import org.testng.annotations.Test; @@ -7,6 +10,8 @@ import java.util.Arrays; import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertFalse; +import static org.testng.Assert.assertTrue; public class TestDebug0 extends CommonSpec { @Test @@ -19,12 +24,30 @@ public void testDebug0() throws Exception { assertEquals(Debug0._seqFields, new String[] { "one", "arrayOfInts", "_unnamed2" }); - assertEquals(r._attrStart.get("one").intValue(), 0); - assertEquals(r._attrEnd.get("one").intValue(), 1); - assertEquals(r._attrStart.get("arrayOfInts").intValue(), 1); - assertEquals(r._attrEnd.get("arrayOfInts").intValue(), 4); + assertTrue(r instanceof PositionInfo, "Structure in debug mode should implement PositionInfo"); + assertEquals(r._spans().size(), 3, "Position information should exists for each field"); - assertEquals(r._arrStart.get("arrayOfInts").toArray(), new Integer[] { 1, 2, 3 }); - assertEquals(r._arrEnd.get("arrayOfInts").toArray(), new Integer[] { 2, 3, 4 }); + final Span oneSpan = r._spans().get("one"); + assertFalse(oneSpan instanceof ArraySpan, "Non-Array span shouldn't be instanceof ArraySpan"); + assertEquals(oneSpan.start, 0); + assertEquals(oneSpan.end, 1); + + final Span arraySpan = r._spans().get("arrayOfInts"); + assertEquals(arraySpan.start, 1); + assertEquals(arraySpan.end, 4); + + assertTrue(arraySpan instanceof ArraySpan, "Array span should be instanceof ArraySpan"); + + final ArraySpan array = (ArraySpan)arraySpan; + assertEquals(array.items.size(), 3); + + final long[] starts = { 1, 2, 3 }; + final long[] ends = { 2, 3, 4 }; + int i = 0; + for (final Span span : array.items) { + assertEquals(span.start, starts[i]); + assertEquals(span.end, ends[i]); + ++i; + } } }