diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java index 5b53aa546..6998ff300 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/DoTypeService.java @@ -36,7 +36,7 @@ public List getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType td List result = new ArrayList<>(); // DA -> BDA -> BDA.. sdoOrDAService.getDAs(tdoType).forEach(tda -> { - DoLinkedToDa doLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); + DoLinkedToDa doLinkedToDa = doLinkedToDaTemplate.deepCopy(); doLinkedToDa.dataAttribute().setDaName(tda.getName()); if (tda.isSetFc()) { doLinkedToDa.dataAttribute().setFc(tda.getFc()); @@ -57,7 +57,7 @@ public List getAllSDOLinkedToDa(TDataTypeTemplates dtt, TDOType td if (tsdo.isSetType()) { findDoType(dtt, tdoType1 -> tdoType1.getId().equals(tsdo.getType())) .ifPresent(nextDoType -> { - DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); + DoLinkedToDa newDoLinkedToDa = doLinkedToDaTemplate.deepCopy(); newDoLinkedToDa.dataObject().getSdoNames().add(tsdo.getName()); if (nextDoType.isSetCdc()) { newDoLinkedToDa.dataObject().setCdc(nextDoType.getCdc()); @@ -73,7 +73,7 @@ private Stream getDaLinkedToBDA(TDataTypeTemplates dtt, TDAType td // BDA -> BDA -> BDA.. return bdaService.getBDAs(tdaType1) .flatMap(tbda -> { - DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDaTemplate); + DoLinkedToDa newDoLinkedToDa = doLinkedToDaTemplate.deepCopy(); newDoLinkedToDa.dataAttribute().getBdaNames().add(tbda.getName()); // STRUCT type (BType=STRUCT) refer to complex BDA object, otherwise it is kind of DA object diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java index 74aef2e46..905cd8a2e 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java @@ -146,13 +146,15 @@ public void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedT }); } - public void completeFromDAInstance(TIED tied, String ldInst, TAnyLN anyLN, DoLinkedToDa doLinkedToDa) { + @Override + public DoLinkedToDa getDoLinkedToDaCompletedFromDAI(TIED tied, String ldInst, TAnyLN anyLN, DoLinkedToDa doLinkedToDa) { + DoLinkedToDa result = doLinkedToDa.deepCopy(); getDOAndDAInstances(anyLN, doLinkedToDa.toFilter()) .ifPresent(tdai -> { if (tdai.isSetVal()) { - doLinkedToDa.dataAttribute().addDaVal(tdai.getVal()); + result.dataAttribute().addDaVal(tdai.getVal()); } - if (doLinkedToDa.dataAttribute().getFc() == TFCEnum.SG || doLinkedToDa.dataAttribute().getFc() == TFCEnum.SE) { + if (result.dataAttribute().getFc() == TFCEnum.SG || result.dataAttribute().getFc() == TFCEnum.SE) { if (hasSettingGroup(tdai)) { boolean isIedHasConfSG = tied.isSetAccessPoint() && tied.getAccessPoint().stream() @@ -163,15 +165,16 @@ public void completeFromDAInstance(TIED tied, String ldInst, TAnyLN anyLN, DoLin && tAccessPoint.getServices() != null && tAccessPoint.getServices().getSettingGroups() != null && tAccessPoint.getServices().getSettingGroups().getConfSG() != null); - doLinkedToDa.dataAttribute().setValImport((!tdai.isSetValImport() || tdai.isValImport()) && isIedHasConfSG); + result.dataAttribute().setValImport((!tdai.isSetValImport() || tdai.isValImport()) && isIedHasConfSG); } else { - log.warn(String.format("Inconsistency in the SCD file - DAI= %s with fc= %s must have a sGroup attribute", tdai.getName(), doLinkedToDa.dataAttribute().getFc())); - doLinkedToDa.dataAttribute().setValImport(false); + log.warn("Inconsistency in the SCD file - DAI= {} with fc= {} must have a sGroup attribute", tdai.getName(), result.dataAttribute().getFc()); + result.dataAttribute().setValImport(false); } } else if (tdai.isSetValImport()) { - doLinkedToDa.dataAttribute().setValImport(tdai.isValImport()); + result.dataAttribute().setValImport(tdai.isValImport()); } }); + return result; } public boolean matchesLn(TAnyLN tAnyLN, String lnClass, String lnInst, String lnPrefix) { diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/LnEditor.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/LnEditor.java index 84b9d6881..e6fd1f7a6 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/LnEditor.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/api/LnEditor.java @@ -6,6 +6,7 @@ import org.lfenergy.compas.scl2007b4.model.TAnyLN; import org.lfenergy.compas.scl2007b4.model.TDAI; +import org.lfenergy.compas.scl2007b4.model.TIED; import org.lfenergy.compas.sct.commons.domain.DoLinkedToDa; import org.lfenergy.compas.sct.commons.domain.DoLinkedToDaFilter; import org.lfenergy.compas.sct.commons.util.ActiveStatus; @@ -22,4 +23,5 @@ public interface LnEditor { void updateOrCreateDOAndDAInstances(TAnyLN tAnyLN, DoLinkedToDa doLinkedToDa); + DoLinkedToDa getDoLinkedToDaCompletedFromDAI(TIED tied, String ldInst, TAnyLN anyLN, DoLinkedToDa doLinkedToDa); } diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataAttribute.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataAttribute.java index 0123295b0..b3d7469ef 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataAttribute.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataAttribute.java @@ -13,6 +13,7 @@ import java.util.ArrayList; import java.util.List; +import java.util.Objects; @Getter @Setter @@ -26,19 +27,24 @@ public class DataAttribute { private List bdaNames = new ArrayList<>(); private List daiValues = new ArrayList<>(); - public static DataAttribute copyFrom(DataAttribute dataAttribute) { - DataAttribute dataAttribute1 = new DataAttribute(); - dataAttribute1.setDaName(dataAttribute.getDaName()); - dataAttribute1.setFc(dataAttribute.getFc()); - dataAttribute1.setBType(dataAttribute.getBType()); - dataAttribute1.setType(dataAttribute.getType()); - dataAttribute1.getBdaNames().addAll(dataAttribute.getBdaNames()); - dataAttribute1.setValImport(dataAttribute.isValImport()); - return dataAttribute1; + public DataAttribute deepCopy() { + DataAttribute dataAttribute = new DataAttribute(); + dataAttribute.setDaName(getDaName()); + dataAttribute.setType(getType()); + dataAttribute.setBType(getBType()); + dataAttribute.setFc(getFc()); + dataAttribute.setValImport(isValImport()); + dataAttribute.getBdaNames().addAll(getBdaNames()); + dataAttribute.getDaiValues().addAll(getDaiValues()); + return dataAttribute; } public void addDaVal(List vals) { - vals.forEach(tVal -> daiValues.add(new DaVal(tVal.isSetSGroup() ? tVal.getSGroup() : null, tVal.getValue()))); + vals.forEach(tVal -> { + Long settingGroup = tVal.isSetSGroup() ? tVal.getSGroup() : null; + daiValues.removeIf(daVal -> Objects.equals(daVal.settingGroup(), settingGroup)); + daiValues.add(new DaVal(settingGroup, tVal.getValue())); + }); } @Override diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java index 33a5e53e0..0034b1b82 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DataObject.java @@ -28,8 +28,8 @@ public DataObject(String doName, TPredefinedCDCEnum cdc, List sdoNames) this.sdoNames.addAll(sdoNames); } - public static DataObject copyFrom(DataObject dataObject) { - return new DataObject(dataObject.getDoName(), dataObject.getCdc(), dataObject.getSdoNames()); + public DataObject deepCopy() { + return new DataObject(getDoName(), getCdc(), getSdoNames()); } @Override diff --git a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java index 92e34de9f..f94eea2ce 100644 --- a/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java +++ b/sct-commons/src/main/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDa.java @@ -11,10 +11,10 @@ public record DoLinkedToDa(DataObject dataObject, DataAttribute dataAttribute) { - public static DoLinkedToDa copyFrom(DoLinkedToDa doLinkedToDa) { + public DoLinkedToDa deepCopy() { return new DoLinkedToDa( - DataObject.copyFrom(doLinkedToDa.dataObject()), - DataAttribute.copyFrom(doLinkedToDa.dataAttribute())); + dataObject().deepCopy(), + dataAttribute().deepCopy()); } public String getDoRef() { diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java index 2c7f4bc28..0ab1cd0f0 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java @@ -6,6 +6,7 @@ import org.assertj.core.api.Assertions; import org.assertj.core.groups.Tuple; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.Arguments; @@ -15,6 +16,7 @@ import org.lfenergy.compas.sct.commons.domain.*; import org.lfenergy.compas.sct.commons.testhelpers.SclTestMarshaller; import org.lfenergy.compas.sct.commons.util.ActiveStatus; +import org.lfenergy.compas.sct.commons.util.SclConstructorHelper; import java.util.*; import java.util.stream.Stream; @@ -23,7 +25,12 @@ class LnServiceTest { - private final LnService lnService = new LnService(); + private LnService lnService; + + @BeforeEach + void setUp() { + lnService = new LnService(); + } @Test void getAnylns_should_return_lns() { @@ -173,7 +180,6 @@ void getDOAndDAInstance_should_return_true_when_DO_and_DA_instances_exists() { ); DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("Do.sdo1.d", "antRef.bda1.bda2.bda3"); //When - LnService lnService = new LnService(); Optional optionalTDAI = lnService.getDOAndDAInstances(tAnyLN, doLinkedToDaFilter); //Then assertThat(optionalTDAI).isPresent(); @@ -191,7 +197,6 @@ void getDOAndDAInstance_should_return_false_when_DO_and_DA_instances_not_exists( ); DoLinkedToDaFilter doLinkedToDaFilter = DoLinkedToDaFilter.from("Do.sdo1.d", "antRef.unknown.bda2.bda3"); //When - LnService lnService = new LnService(); Optional optionalTDAI = lnService.getDOAndDAInstances(tAnyLN, doLinkedToDaFilter); //Then assertThat(optionalTDAI).isEmpty(); @@ -199,14 +204,13 @@ void getDOAndDAInstance_should_return_false_when_DO_and_DA_instances_not_exists( @ParameterizedTest @CsvSource(value = {"null:false", "false:false", "true:true"}, delimiter = ':') - void completeFromDataAttributeInstance_should_complete_when_valImport_set_or_not(Boolean existingValImportSet, - Boolean expectedValImport) { + void getCompletedDoLinkedToDaFromDAI_should_getDoLinkedToDaCompleted_when_valImport_set_or_not(boolean existingValImportSet, boolean expectedValImport) { //Given TIED tied = new TIED(); TAnyLN tAnyLN = initDOAndDAInstances( new LinkedList<>(List.of("Do")), new LinkedList<>(List.of("Da")), - "new value", existingValImportSet + "dai value", existingValImportSet ); DataObject dataObject = new DataObject(); dataObject.setDoName("Do"); @@ -214,10 +218,13 @@ void completeFromDataAttributeInstance_should_complete_when_valImport_set_or_not dataAttribute.setDaName("Da"); DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); - lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(dataAttribute.isValImport()).isEqualTo(expectedValImport); + assertThat(result.dataAttribute().isValImport()).isEqualTo(expectedValImport); + assertThat(result.dataAttribute().getDaiValues()).isEqualTo(List.of(new DaVal(null, "dai value"))); + assertThat(result).usingRecursiveComparison() + .ignoringFields("dataAttribute.valImport", "dataAttribute.daiValues") + .isEqualTo(doLinkedToDa); } public static Collection testSettingGroupValuesWithIedHasConfSG() { @@ -233,17 +240,17 @@ public static Collection testSettingGroupValuesWithIedHasConfSG() { } @ParameterizedTest @MethodSource("testSettingGroupValuesWithIedHasConfSG") - void completeFromDataAttributeInstance_should_complete_when_settingGroup_set_or_not(Boolean existingValImportSet, - Boolean isWithSettingGroup, - Boolean isIedHasConfSG, - TFCEnum givenFc, - Boolean expectedValImport) { + void getCompletedDoLinkedToDaFromDAI_should_getDoLinkedToDaCompleted_when_settingGroup_set_or_not(Boolean existingValImportSet, + Boolean isWithSettingGroup, + Boolean isIedHasConfSG, + TFCEnum givenFc, + Boolean expectedValImport) { //Given TIED tied = new TIED(); TAnyLN tAnyLN = new LN0(); TDAI dai = initDOAndDAInstances(tAnyLN, new LinkedList<>(List.of("Do")), new LinkedList<>(List.of("Da"))); TVal tVal = new TVal(); - tVal.setValue("dailue"); + tVal.setValue("dai value"); dai.getVal().clear(); dai.getVal().add(tVal); // @@ -273,15 +280,18 @@ void completeFromDataAttributeInstance_should_complete_when_settingGroup_set_or_ DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); - lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.dataAttribute().isValImport()).isEqualTo(expectedValImport); + assertThat(result.dataAttribute().isValImport()).isEqualTo(expectedValImport); + assertThat(result.dataAttribute().getDaiValues()).isEqualTo(List.of(new DaVal(isWithSettingGroup ? 1L : null, "dai value"))); + assertThat(result).usingRecursiveComparison() + .ignoringFields("dataAttribute.valImport", "dataAttribute.daiValues") + .isEqualTo(doLinkedToDa); } @Test - void completeFromDataAttributeInstance__should_not_complete_when_not_found() { + void getCompletedDoLinkedToDaFromDAI_should_not_getDoLinkedToDaCompleted_when_not_found() { //Given TIED tied = new TIED(); TAnyLN tAnyLN = new LN0(); @@ -292,21 +302,20 @@ void completeFromDataAttributeInstance__should_not_complete_when_not_found() { DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); - lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.dataAttribute().isValImport()).isFalse();//initialValue + assertThat(result).usingRecursiveComparison().isEqualTo(doLinkedToDa);//initialValue } @ParameterizedTest @CsvSource(value = {"null:false", "false:false", "true:true"}, delimiter = ':') - void completeFromDataAttributeInstance_should_complete_when_struct(Boolean input, Boolean expected) { + void getCompletedDoLinkedToDaFromDAI_should_getDoLinkedToDaCompleted_when_struct(Boolean input, Boolean expected) { //Given TIED tied = new TIED(); TAnyLN tAnyLN = initDOAndDAInstances( new LinkedList<>(List.of("Do","sdo1", "d")), new LinkedList<>(List.of("antRef","bda1", "bda2", "bda3")), - "new value", input + "dai value", input ); DataObject dataObject = new DataObject(); dataObject.setDoName("Do"); @@ -318,10 +327,67 @@ void completeFromDataAttributeInstance_should_complete_when_struct(Boolean input DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); - lnService.completeFromDAInstance(tied, "ldInst", tAnyLN, doLinkedToDa); + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); + //Then + assertThat(result.dataAttribute().isValImport()).isEqualTo(expected); + assertThat(result.dataAttribute().getDaiValues()).isEqualTo(List.of(new DaVal(null, "dai value"))); + assertThat(result).usingRecursiveComparison() + .ignoringFields("dataAttribute.valImport", "dataAttribute.daiValues") + .isEqualTo(doLinkedToDa); + } + + @Test + void getDoLinkedToDaCompletedFromDAI_should_replace_val() { + //Given + TIED tied = new TIED(); + TAnyLN tAnyLN = initDOAndDAInstances( + new LinkedList<>(List.of("Do")), + new LinkedList<>(List.of("Da")), + "dai value", null + ); + DataObject dataObject = new DataObject(); + dataObject.setDoName("Do"); + DataAttribute dataAttribute = new DataAttribute(); + dataAttribute.setDaName("Da"); + dataAttribute.getDaiValues().add(new DaVal(null, "value from dataTypeTemplate")); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); + //When + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); + //Then + assertThat(result.dataAttribute().getDaiValues()).isEqualTo(List.of(new DaVal(null, "dai value"))); + assertThat(result).usingRecursiveComparison() + .ignoringFields("dataAttribute.daiValues") + .isEqualTo(doLinkedToDa); + } + + @Test + void getDoLinkedToDaCompletedFromDAI_should_replace_val_with_sGroup() { + //Given + TIED tied = new TIED(); + TAnyLN tAnyLN = initDOAndDAInstances( + new LinkedList<>(List.of("Do")), + new LinkedList<>(List.of("Da")), + "ignored", null + ); + TDAI tdai = (TDAI) tAnyLN.getDOI().getFirst().getSDIOrDAI().getFirst(); + tdai.getVal().clear(); + tdai.getVal().add(SclConstructorHelper.newVal("value 2 from DAI", 2L)); + DataObject dataObject = new DataObject(); + dataObject.setDoName("Do"); + DataAttribute dataAttribute = new DataAttribute(); + dataAttribute.setDaName("Da"); + dataAttribute.getDaiValues().add(new DaVal(1L, "value 1 from dataTypeTemplate")); + dataAttribute.getDaiValues().add(new DaVal(2L, "value 2 from dataTypeTemplate")); + DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); + //When + DoLinkedToDa result = lnService.getDoLinkedToDaCompletedFromDAI(tied, "ldInst", tAnyLN, doLinkedToDa); //Then - assertThat(doLinkedToDa.dataAttribute().isValImport()).isEqualTo(expected); + assertThat(result.dataAttribute().getDaiValues()).containsExactly( + new DaVal(1L, "value 1 from dataTypeTemplate"), + new DaVal(2L, "value 2 from DAI")); + assertThat(result).usingRecursiveComparison() + .ignoringFields("dataAttribute.daiValues") + .isEqualTo(doLinkedToDa); } @Test @@ -337,7 +403,6 @@ void updateOrCreateDOAndDAInstance_should_create_given_DO_and_DA_instances_when_ dataAttribute.getDaiValues().add(new DaVal(2L, "new value 2")); DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); lnService.updateOrCreateDOAndDAInstances(tAnyLN, doLinkedToDa); //Then assertThat(tAnyLN.getDOI()).hasSize(1); @@ -368,7 +433,6 @@ void updateOrCreateDOAndDAInstance_should_create_given_DO_and_DA_instances_when_ DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); lnService.updateOrCreateDOAndDAInstances(tAnyLN, doLinkedToDa); //Then @@ -431,7 +495,6 @@ void updateOrCreateDOAndDAInstance_should_complete_DO_and_DA_instances_modificat DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); //When - LnService lnService = new LnService(); lnService.updateOrCreateDOAndDAInstances(tAnyLN, doLinkedToDa); //Then @@ -516,9 +579,7 @@ private TAnyLN initDOAndDAInstances(LinkedList doInstances, if(structInstances.size() == 1){ TDAI dai = new TDAI(); dai.setName(daInstances.getLast()); - TVal tVal = new TVal(); - tVal.setValue(daiVal); - dai.getVal().add(tVal); + dai.getVal().add(SclConstructorHelper.newVal(daiVal)); if (valImport != null) dai.setValImport(valImport); lastSDI.getSDIOrDAI().add(dai); } @@ -526,9 +587,7 @@ private TAnyLN initDOAndDAInstances(LinkedList doInstances, if(structInstances.size() == 1){ TDAI dai = new TDAI(); dai.setName(daInstances.getLast()); - TVal tVal = new TVal(); - tVal.setValue(daiVal); - dai.getVal().add(tVal); + dai.getVal().add(SclConstructorHelper.newVal(daiVal)); if (valImport != null) dai.setValImport(valImport); tdoi.getSDIOrDAI().add(dai); } diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DataAttributeTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DataAttributeTest.java index 41f3f23ab..8b1ae122c 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DataAttributeTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DataAttributeTest.java @@ -7,7 +7,10 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.NullSource; +import org.junit.jupiter.params.provider.ValueSource; import org.lfenergy.compas.scl2007b4.model.TFCEnum; +import org.lfenergy.compas.sct.commons.util.SclConstructorHelper; import java.util.List; @@ -69,7 +72,38 @@ void isUpdatable_should_return_ExpectedValue(String fcVal, boolean valImport, bo dataAttribute.setFc(TFCEnum.valueOf(fcVal)); // When Then assertThat(dataAttribute.isUpdatable()).isEqualTo(expected); + } + @Test + void addDaVal_should_add_Val() { + // Given + DataAttribute dataAttribute = new DataAttribute(); + // When + dataAttribute.addDaVal(List.of(SclConstructorHelper.newVal("value", null))); + // Then + assertThat(dataAttribute.getDaiValues()).containsExactly(new DaVal(null, "value")); + } + + @ParameterizedTest + @NullSource + @ValueSource(longs = 5L) + void addDaVal_should_replace_Val_with_same_sGroup(Long sGroup) { + // Given + DataAttribute dataAttribute = new DataAttribute(); + dataAttribute.addDaVal(List.of( + SclConstructorHelper.newVal("old value 1", 1L), + SclConstructorHelper.newVal("old value 2", 2L), + SclConstructorHelper.newVal("old value sGroup", sGroup) + )); + // When + dataAttribute.addDaVal(List.of(SclConstructorHelper.newVal("new value sGroup", sGroup))); + // Then + assertThat(dataAttribute.getDaiValues()) + .containsExactlyInAnyOrder( + new DaVal(sGroup, "new value sGroup"), + new DaVal(1L, "old value 1"), + new DaVal(2L, "old value 2") + ); } -} \ No newline at end of file +} diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java index dc44cbad7..9a753b027 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/domain/DoLinkedToDaTest.java @@ -16,7 +16,7 @@ class DoLinkedToDaTest { @Test - void test_copyFrom() { + void test_deepCopy() { // Given DataObject dataObject = new DataObject(); dataObject.setDoName("doName"); @@ -28,7 +28,7 @@ void test_copyFrom() { dataAttribute.setFc(TFCEnum.BL); DoLinkedToDa doLinkedToDa = new DoLinkedToDa(dataObject, dataAttribute); // When - DoLinkedToDa newDoLinkedToDa = DoLinkedToDa.copyFrom(doLinkedToDa); + DoLinkedToDa newDoLinkedToDa = doLinkedToDa.deepCopy(); // Then assertAll("Copy From", () -> assertThat(newDoLinkedToDa.dataObject().getCdc()).isEqualTo(doLinkedToDa.dataObject().getCdc()), diff --git a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/DataAttributeRefTest.java b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/DataAttributeRefTest.java index d1c6238c0..2eb622259 100644 --- a/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/DataAttributeRefTest.java +++ b/sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/DataAttributeRefTest.java @@ -21,6 +21,7 @@ import static org.assertj.core.api.Assertions.assertThatCode; import static org.junit.jupiter.api.Assertions.assertAll; import static org.junit.jupiter.api.Assertions.assertArrayEquals; +import static org.junit.jupiter.api.Named.named; import static org.lfenergy.compas.sct.commons.testhelpers.DataTypeUtils.createDa; import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME; import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL_DA_NAME; @@ -139,7 +140,7 @@ void setDaiValues_when_called_withMultipleVal_shouldFillSGroupAndValue(){ @Test @Tag("issue-321") - void testCopyFrom() { + void testDeepCopy() { // Given DataAttributeRef dataAttributeRef = DTO.createDataAttributeRef("pre","lnclass","1"); // When @@ -186,7 +187,7 @@ void testCopyFrom() { */ @ParameterizedTest @MethodSource("daParametersProviderUpdatable") - void isUpdatable_case0(String testName, String daName, TFCEnum fc, boolean valImport) { + void isUpdatable_case0(String daName, TFCEnum fc, boolean valImport) { //Given DataAttributeRef dataAttributeRef = new DataAttributeRef(); dataAttributeRef.setDoName(new DoTypeName(MOD_DO_NAME)); @@ -201,19 +202,19 @@ void isUpdatable_case0(String testName, String daName, TFCEnum fc, boolean valIm private static Stream daParametersProviderUpdatable() { return Stream.of( - Arguments.of("should return true when Mod", STVAL_DA_NAME, TFCEnum.CF, true), - Arguments.of("should return true when Mod", STVAL_DA_NAME, TFCEnum.CF, false), - Arguments.of("should return true when Mod", STVAL_DA_NAME, TFCEnum.MX, true), - Arguments.of("should return true when Mod", STVAL_DA_NAME, TFCEnum.MX, false), - Arguments.of("should return true when Mod", STVAL_DA_NAME, null, true), - Arguments.of("should return true when Mod", STVAL_DA_NAME, null, false), - Arguments.of("should return true when Mod", "ctlModel", TFCEnum.CF, true) + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), TFCEnum.CF, true), + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), TFCEnum.CF, false), + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), TFCEnum.MX, true), + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), TFCEnum.MX, false), + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), null, true), + Arguments.of(named("should return true when Mod", STVAL_DA_NAME), null, false), + Arguments.of(named("should return true when Mod", "ctlModel"), TFCEnum.CF, true) ); } @ParameterizedTest @MethodSource("daParametersProviderNotUpdatable") - void isUpdatable_case1(String testName, String daName, TFCEnum fc, boolean valImport) { + void isUpdatable_case1(String daName, TFCEnum fc, boolean valImport) { //Given DataAttributeRef dataAttributeRef = new DataAttributeRef(); dataAttributeRef.setDoName(new DoTypeName(MOD_DO_NAME)); @@ -228,11 +229,11 @@ void isUpdatable_case1(String testName, String daName, TFCEnum fc, boolean valIm private static Stream daParametersProviderNotUpdatable() { return Stream.of( - Arguments.of("should return false when Mod", "ctlModel", TFCEnum.CF, false), - Arguments.of("should return false when Mod", "ctlModel", TFCEnum.MX, true), - Arguments.of("should return false when Mod", "ctlModel", TFCEnum.MX, false), - Arguments.of("should return false when Mod", "ctlModel", null, true), - Arguments.of("should return false when Mod", "ctlModel", null, false) + Arguments.of(named("should return false when Mod", "ctlModel"), TFCEnum.CF, false), + Arguments.of(named("should return false when Mod", "ctlModel"), TFCEnum.MX, true), + Arguments.of(named("should return false when Mod", "ctlModel"), TFCEnum.MX, false), + Arguments.of(named("should return false when Mod", "ctlModel"), null, true), + Arguments.of(named("should return false when Mod", "ctlModel"), null, false) ); }