diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/pinout/PinoutLogicIntegratedTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/pinout/PinoutLogicIntegratedTest.java index 970286a94e..d4bdde22c9 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/pinout/PinoutLogicIntegratedTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/pinout/PinoutLogicIntegratedTest.java @@ -4,6 +4,7 @@ import com.rusefi.EnumsReader; import com.rusefi.ReaderState; import com.rusefi.ReaderStateImpl; import com.rusefi.VariableRegistry; +import com.rusefi.enum_reader.Value; import com.rusefi.newparse.ParseState; import org.junit.Test; @@ -101,7 +102,7 @@ public class PinoutLogicIntegratedTest { state.getEnumsReader().read(new StringReader("enum class Gpio : uint16_t {\n" + "Unassigned = 0,\n" + "Invalid = 0x01,\n" + - "E11 = 2,\n" + + "E11 = 0x0B,\n" + "};")); ParseState definitionState = new ParseState(state.getEnumsReader()); @@ -112,4 +113,14 @@ public class PinoutLogicIntegratedTest { assertEquals(expected, testWriter.getBuffer().toString()); } + + @Test + public void parseInt() { + assertEquals(1, Value.parseInt("1")); + assertEquals(10, Value.parseInt("0x0a")); + assertEquals(10, Value.parseInt("0xa")); + assertEquals(10, Value.parseInt("0Xa")); + assertEquals(11, Value.parseInt("0x0B")); + } + } diff --git a/java_tools/enum2string.jar b/java_tools/enum2string.jar index f70c09f09c..bc91d29956 100644 Binary files a/java_tools/enum2string.jar and b/java_tools/enum2string.jar differ diff --git a/java_tools/enum_to_string/src/main/java/com/rusefi/enum_reader/Value.java b/java_tools/enum_to_string/src/main/java/com/rusefi/enum_reader/Value.java index 8600fdcb77..182f2dec2f 100644 --- a/java_tools/enum_to_string/src/main/java/com/rusefi/enum_reader/Value.java +++ b/java_tools/enum_to_string/src/main/java/com/rusefi/enum_reader/Value.java @@ -29,9 +29,14 @@ public class Value implements Comparable { } public int getIntValue() { - if (value.toLowerCase().startsWith("0x")) - return Integer.parseInt(value.substring(2), 16); - return Integer.parseInt(value); + return parseInt(value); + } + + public static int parseInt(String value) { + String trimmed = value.trim(); + if (trimmed.toLowerCase().startsWith("0x")) + return Integer.parseInt(trimmed.substring(2), 16); + return Integer.parseInt(trimmed); } @Override @@ -51,9 +56,13 @@ public class Value implements Comparable { try { return getIntValue(); } catch (NumberFormatException e) { - String resolvedValue = registry.get(value); - Objects.requireNonNull(resolvedValue, value); - return Integer.parseInt(resolvedValue); + return handleNotInteger(registry); } } + + private int handleNotInteger(VariableRegistry registry) { + String resolvedValue = registry.get(value); + Objects.requireNonNull(resolvedValue, value); + return Integer.parseInt(resolvedValue); + } }