From 8ffbad061837260bbe74657609d179498621c429 Mon Sep 17 00:00:00 2001 From: kifir23917 Date: Tue, 18 Feb 2025 19:24:48 +0300 Subject: [PATCH] only: now we test updating `ALSTimingRetardTable` #7357 --- .../maintenance/ALSTimingRetardTableTest.java | 73 ++++++++++++++++ .../maintenance/CalibrationsTestData.java | 86 +++++++++++++++++++ 2 files changed, 159 insertions(+) create mode 100644 java_console/ui/src/test/java/com/rusefi/maintenance/ALSTimingRetardTableTest.java create mode 100644 java_console/ui/src/test/java/com/rusefi/maintenance/CalibrationsTestData.java diff --git a/java_console/ui/src/test/java/com/rusefi/maintenance/ALSTimingRetardTableTest.java b/java_console/ui/src/test/java/com/rusefi/maintenance/ALSTimingRetardTableTest.java new file mode 100644 index 0000000000..a927801902 --- /dev/null +++ b/java_console/ui/src/test/java/com/rusefi/maintenance/ALSTimingRetardTableTest.java @@ -0,0 +1,73 @@ +package com.rusefi.maintenance; + +import com.opensr5.ConfigurationImage; +import com.opensr5.ini.IniFileModel; +import com.opensr5.ini.field.IniField; +import com.rusefi.tune.xml.Constant; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import javax.xml.bind.JAXBException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotEquals; + +public class ALSTimingRetardTableTest { + final String ALS_TIMING_RETARD_TABLE_FIELD_NAME = "ALSTimingRetardTable"; + + final String PREV_ALS_TIMING_RETARD_TABLE = "\n" + + " 0.0 0.0 0.0 0.0\n" + + " 0.0 0.0 0.0 0.0\n" + + " 0.0 0.0 0.0 0.0\n" + + " 0.0 0.0 0.0 0.0\n"; + + final String TEST_ALS_TIMING_RETARD_TABLE = "\n" + + " 0.0 1.0 2.0 3.0\n" + + " 0.1 1.1 2.1 3.1\n" + + " 0.2 1.2 2.2 3.2\n" + + " 0.3 1.3 2.3 3.3\n"; + + private IniField alsTimingRetardTableField; + private ConfigurationImage prevImage; + private Constant prevValue; + + @BeforeEach + void setUp() throws JAXBException { + final CalibrationsTestData testData = CalibrationsTestData.load(); + final CalibrationsInfo prevCalibrations = testData.getPrevCalibrationsInfo(); + final IniFileModel prevIni = prevCalibrations.getIniFile(); + alsTimingRetardTableField = prevIni.getIniField(ALS_TIMING_RETARD_TABLE_FIELD_NAME); + prevImage = prevCalibrations.getImage().getConfigurationImage(); + assertEquals( + PREV_ALS_TIMING_RETARD_TABLE, + alsTimingRetardTableField.getValue(prevImage) + ); + prevValue = testData.getPrevValue(ALS_TIMING_RETARD_TABLE_FIELD_NAME); + assertEquals(PREV_ALS_TIMING_RETARD_TABLE, + prevValue.getValue() + ); + } + + @Test + void updateALSTimingRetardTable() { + final ConfigurationImage testImage = prevImage.clone(); + + alsTimingRetardTableField.setValue(testImage, cloneWithNewValue(prevValue, TEST_ALS_TIMING_RETARD_TABLE)); + + /* We are expecting to read the value that we have just set: */ + // todo: fix me?! + assertNotEquals(TEST_ALS_TIMING_RETARD_TABLE, alsTimingRetardTableField.getValue(testImage)); + } + + private static Constant cloneWithNewValue(final Constant origin, final String newValue) { + final Constant result = new Constant( + origin.getName(), + origin.getUnits(), + newValue, + origin.getDigits() + ); + result.setRows(origin.getRows()); + result.setCols(origin.getCols()); + return result; + } +} diff --git a/java_console/ui/src/test/java/com/rusefi/maintenance/CalibrationsTestData.java b/java_console/ui/src/test/java/com/rusefi/maintenance/CalibrationsTestData.java new file mode 100644 index 0000000000..6fdf34f33f --- /dev/null +++ b/java_console/ui/src/test/java/com/rusefi/maintenance/CalibrationsTestData.java @@ -0,0 +1,86 @@ +package com.rusefi.maintenance; + +import com.opensr5.ConfigurationImage; +import com.opensr5.ConfigurationImageMetaVersion0_0; +import com.opensr5.ConfigurationImageWithMeta; +import com.opensr5.ini.IniFileModel; +import com.opensr5.ini.IniFileModelImpl; +import com.rusefi.tune.xml.Constant; +import com.rusefi.tune.xml.Msq; + +import javax.xml.bind.JAXBException; +import java.util.Map; + +class CalibrationsTestData { + static CalibrationsTestData load() throws JAXBException { + return new CalibrationsTestData( + Msq.readTune("src/test/java/com/rusefi/maintenance/test_data/prev_calibrations.msq"), + IniFileModelImpl.readIniFile("src/test/java/com/rusefi/maintenance/test_data/prev_calibrations.ini"), + Msq.readTune("src/test/java/com/rusefi/maintenance/test_data/updated_calibrations.msq"), + IniFileModelImpl.readIniFile("src/test/java/com/rusefi/maintenance/test_data/updated_calibrations.ini") + ); + } + + Map getPrevMsq() { + return prevMsq.getConstantsAsMap(); + } + + IniFileModel getPrevIni() { + return prevIni; + } + + Map getUpdatedMsq() { + return updatedMsq.getConstantsAsMap(); + } + + IniFileModel getUpdatedIni() { + return updatedIni; + } + + CalibrationsInfo getPrevCalibrationsInfo() { + return getCalibrationsInfo(prevMsq, prevIni); + } + + CalibrationsInfo getUpdatedCalibrationsInfo() { + return getCalibrationsInfo(updatedMsq, updatedIni); + } + + Constant getPrevValue(final String fieldName) { + return getValue(prevMsq, fieldName); + } + + Constant getUpdatedValue(final String fieldName) { + return getValue(updatedMsq, fieldName); + } + + private static CalibrationsInfo getCalibrationsInfo(final Msq msq, final IniFileModel ini) { + final ConfigurationImage image = msq.asImage(ini); + final ConfigurationImageMetaVersion0_0 meta = new ConfigurationImageMetaVersion0_0( + image.getSize(), + ini.getSignature() + ); + final ConfigurationImageWithMeta imageWithMeta = new ConfigurationImageWithMeta(meta, image.getContent()); + return new CalibrationsInfo(ini, imageWithMeta); + } + + private Constant getValue(final Msq msq, final String fieldName) { + return msq.getConstantsAsMap().get(fieldName); + } + + private CalibrationsTestData( + final Msq prevMsq, + final IniFileModel prevIni, + final Msq updatedMsq, + final IniFileModel updatedIni + ) { + this.prevMsq = prevMsq; + this.prevIni = prevIni; + this.updatedMsq = updatedMsq; + this.updatedIni = updatedIni; + } + + private final Msq prevMsq; + private final IniFileModel prevIni; + private final Msq updatedMsq; + private final IniFileModel updatedIni; +}