only: now we test updating `ALSTimingRetardTable` #7357

This commit is contained in:
kifir23917 2025-02-18 19:24:48 +03:00 committed by rusefillc
parent 563e0ff03e
commit 8ffbad0618
2 changed files with 159 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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<String, Constant> getPrevMsq() {
return prevMsq.getConstantsAsMap();
}
IniFileModel getPrevIni() {
return prevIni;
}
Map<String, Constant> 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;
}