diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index acf8317f196..3e9468125c2 100644 Binary files a/java_tools/ConfigDefinition.jar and b/java_tools/ConfigDefinition.jar differ diff --git a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java index 6e0428befc2..65509d5d860 100644 --- a/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java +++ b/java_tools/configuration_definition/src/main/java/com/rusefi/ConfigField.java @@ -367,11 +367,12 @@ public int getDigits() { return Integer.parseInt(tokens[5].trim()); } + // see testUnquote public static String unquote(String token) { int length = token.length(); if (length < 2) return token; - if (token.charAt(0) == '\"') + if (token.charAt(0) == '\"' && token.charAt(token.length() - 1) == '\"') return token.substring(1, length - 1); return token; } diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java index c5302c86128..b0855bd2611 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/test/ConfigFieldParserTest.java @@ -753,4 +753,14 @@ public void testStructTooltips() throws IOException { "\tpid_isForcedInduction = \"Does the vehicle have a turbo or supercharger?\"\n" + "\tpid_enableFan1WithAc = \"Turn on this fan when AC is on.\"\n", tsProjectConsumer.getSettingContextHelp().toString()); } + + @Test + public void testUnquote() { + assertEquals("x", ConfigField.unquote("\"x\"")); + // leave broken opening-only quote! + assertEquals("\"x", ConfigField.unquote("\"x")); +// this does not look great let's document this corner case for now + assertEquals("x\"\n" + + "\"y", ConfigField.unquote("\"x\"\n\"y\"")); + } } diff --git a/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java b/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java index 75e7361afe4..8bebc35b4fd 100644 --- a/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java +++ b/java_tools/configuration_definition/src/test/java/com/rusefi/test/OutputsTest.java @@ -101,7 +101,7 @@ public void generateDataLog() throws IOException { state.variableRegistry.register("GAUGE_NAME_FUEL_BASE", "hello"); DataLogConsumer dataLogConsumer = new DataLogConsumer(null); - state.readBufferedReader(test, (dataLogConsumer)); + state.readBufferedReader(test, dataLogConsumer); assertEquals( "entry = issue_294_31, \"issue_294_31\", int, \"%d\"\n" + "entry = knock1, \"knock 1\", int, \"%d\"\n" + @@ -120,17 +120,19 @@ public void generateDataLog() throws IOException { @Test public void generateDataLogMultiLineCommentWithQuotes() throws IOException { - String test = "struct total\n" + + String test = "#define GAUGE_NAME_FUEL_BASE \"fuel: base mass\"\n" + + "struct total\n" + "\tuint16_t autoscale baseFuel;@@GAUGE_NAME_FUEL_BASE@@\\nThis is the raw value we take from the fuel map or base fuel algorithm, before the corrections;\"mg\",1, 0, 0, 0, 0\n" + "\tuint16_t autoscale baseFuel2;\"line1\\nline2\";\"mg\",1, 0, 0, 0, 0\n" + "end_struct\n"; ReaderState state = new ReaderState(); - state.variableRegistry.register("GAUGE_NAME_FUEL_BASE", "hello"); DataLogConsumer dataLogConsumer = new DataLogConsumer(null); - state.readBufferedReader(test, (dataLogConsumer)); + state.readBufferedReader(test, dataLogConsumer); + + assertEquals("\"fuel: base mass\"", state.variableRegistry.get("GAUGE_NAME_FUEL_BASE")); assertEquals( - "entry = baseFuel, \"hello\", int, \"%d\"\n" + + "entry = baseFuel, \"fuel: base mass\", int, \"%d\"\n" + "entry = baseFuel2, \"line1\", int, \"%d\"\n" , dataLogConsumer.getContent());