From ca1d5e4d0402dd2e494a8b9dcdb3bc89154f5041 Mon Sep 17 00:00:00 2001 From: Mingun Date: Thu, 27 Feb 2020 22:39:26 +0500 Subject: [PATCH] Fix tests for https://github.com/kaitai-io/kaitai_struct_compiler/pull/197 --- .../src/io/kaitai/struct/spec/TestDebug0.java | 35 +++++++++++++++---- 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/spec/java/src/io/kaitai/struct/spec/TestDebug0.java b/spec/java/src/io/kaitai/struct/spec/TestDebug0.java index a133e6964..5e6218e46 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.ArrayRegion; +import io.kaitai.struct.PositionInfo; +import io.kaitai.struct.Region; 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._regions().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 Region oneRegion = r._regions().get("one"); + assertFalse(oneRegion instanceof ArrayRegion, "Non-Array region shouldn't be instanceof ArrayRegion"); + assertEquals(oneRegion.start, 0); + assertEquals(oneRegion.end, 1); + + final Region arrayRegion = r._regions().get("arrayOfInts"); + assertEquals(arrayRegion.start, 1); + assertEquals(arrayRegion.end, 4); + + assertTrue(arrayRegion instanceof ArrayRegion, "Array region should be instanceof ArrayRegion"); + + final ArrayRegion array = (ArrayRegion)arrayRegion; + assertEquals(array.items.size(), 3); + + final long[] starts = { 1, 2, 3 }; + final long[] ends = { 2, 3, 4 }; + int i = 0; + for (final Region region : array.items) { + assertEquals(region.start, starts[i]); + assertEquals(region.end, ends[i]); + ++i; + } } }