From c31554c5b18b4f3c8c7ebce1b66046f4e72fd8cf Mon Sep 17 00:00:00 2001 From: hneemann Date: Wed, 14 Dec 2016 20:27:21 +0100 Subject: [PATCH] new test data parser parses hex numbers correct --- .../neemann/digital/testing/parser/Tokenizer.java | 7 ++++++- .../neemann/digital/testing/parser/ParserTest.java | 13 +++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/main/java/de/neemann/digital/testing/parser/Tokenizer.java b/src/main/java/de/neemann/digital/testing/parser/Tokenizer.java index 6e9d61369..8db3ac2dd 100644 --- a/src/main/java/de/neemann/digital/testing/parser/Tokenizer.java +++ b/src/main/java/de/neemann/digital/testing/parser/Tokenizer.java @@ -143,7 +143,7 @@ public class Tokenizer { boolean wasChar = true; do { c = readChar(); - if (isNumberChar(c) || c == 'x' || c == 'X') { + if (isNumberChar(c) || isHexChar(c) || c == 'x' || c == 'X') { builder.append((char) c); } else { unreadChar(c); @@ -208,6 +208,11 @@ public class Tokenizer { || (c == '_'); } + private boolean isHexChar(int c) { + return (c >= 'a' && c <= 'f') + || (c >= 'A' && c <= 'F'); + } + private boolean isNumberChar(int c) { return (c >= '0' && c <= '9'); } diff --git a/src/test/java/de/neemann/digital/testing/parser/ParserTest.java b/src/test/java/de/neemann/digital/testing/parser/ParserTest.java index 5b124871e..67532b4e0 100644 --- a/src/test/java/de/neemann/digital/testing/parser/ParserTest.java +++ b/src/test/java/de/neemann/digital/testing/parser/ParserTest.java @@ -35,6 +35,19 @@ public class ParserTest extends TestCase { assertEquals(Value.Type.DONTCARE, td.getLines().get(2)[1].getType()); } + public void testHex() throws TestingDataException, IOException, ParserException { + Parser td = new Parser("A B\n0 0xff").parse(); + assertEquals(2, td.getNames().size()); + + assertEquals(1, td.getLines().size()); + + assertEquals(0, td.getLines().get(0)[0].getValue()); + assertEquals(Value.Type.NORMAL, td.getLines().get(0)[0].getType()); + + assertEquals(255, td.getLines().get(0)[1].getValue()); + assertEquals(Value.Type.NORMAL, td.getLines().get(0)[1].getType()); + } + public void testMissingValue() throws IOException, ParserException { try { new Parser("A B\n0 0\n1").parse();