Skip to content

Commit 8e0f8eb

Browse files
committed
[165] Exclude DO Mod and DA stVal from updatability check : it's always updatable (#169)
Signed-off-by: Aliou DIAITE <[email protected]>
1 parent 3ca7a96 commit 8e0f8eb

File tree

5 files changed

+110
-27
lines changed

5 files changed

+110
-27
lines changed

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/dto/ResumedDataTemplate.java

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,9 @@
1111
import java.util.ArrayList;
1212
import java.util.List;
1313

14+
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
15+
import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL;
16+
1417

1518
/**
1619
* A representation of the model object <em><b>ResumedDataTemplate</b></em>.
@@ -64,10 +67,18 @@ public static ResumedDataTemplate copyFrom(ResumedDataTemplate dtt){
6467

6568
/**
6669
* Checks if DA/DO is updatable
67-
* @return Updatable state
70+
* @return true if updatable, false otherwise
6871
*/
6972
public boolean isUpdatable(){
70-
return daName.isDefined() && daName.isUpdatable();
73+
return isDOModDAstVal() || daName.isDefined() && daName.isUpdatable();
74+
}
75+
76+
/**
77+
* Checks if DO is Mod and DA is stVal
78+
* @return true if DO is "Mod" and DA is "stVal", false otherwise
79+
*/
80+
private boolean isDOModDAstVal(){
81+
return doName.getName().equals(MOD_DO_NAME) && daName.getName().equals(STVAL);
7182
}
7283

7384
@JsonIgnore

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/DaTypeNameTest.java

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,13 @@
55
package org.lfenergy.compas.sct.commons.dto;
66

77
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.params.ParameterizedTest;
9+
import org.junit.jupiter.params.provider.Arguments;
10+
import org.junit.jupiter.params.provider.MethodSource;
811
import org.lfenergy.compas.scl2007b4.model.TFCEnum;
912

1013
import java.util.Map;
14+
import java.util.stream.Stream;
1115

1216
import static org.assertj.core.api.Assertions.assertThat;
1317
import static org.lfenergy.compas.sct.commons.testhelpers.DataTypeUtils.createDa;
@@ -122,4 +126,37 @@ void testFrom() {
122126
// then
123127
assertThat(da2).isEqualTo(da1);
124128
}
129+
130+
/**
131+
* ListFcEnum = CF, DC, SG, SP, ST , SE
132+
* Fc value should be in ListFcEnum to be considered as known
133+
*/
134+
@Test
135+
void isUpdatable_shouldReturnTrue_whenFcKnown_And_valImportIsTrue() {
136+
// given
137+
DaTypeName da1 = createDa("da1.bda1.bda2", TFCEnum.CF, true, Map.of(0L, "value"));
138+
// when
139+
boolean isDAUpdatable = da1.isUpdatable();
140+
// then
141+
assertThat(isDAUpdatable).isTrue();
142+
}
143+
144+
@ParameterizedTest
145+
@MethodSource("daParametersProvider")
146+
void isUpdatable(String testName, TFCEnum fc, boolean valImport) {
147+
// given
148+
DaTypeName da1 = createDa("da1.bda1.bda2", fc, valImport, Map.of(0L, "value"));
149+
// when
150+
boolean isDAUpdatable = da1.isUpdatable();
151+
// then
152+
assertThat(isDAUpdatable).isFalse();
153+
}
154+
155+
private static Stream<Arguments> daParametersProvider() {
156+
return Stream.of(
157+
Arguments.of("should return false when ", TFCEnum.MX, true),
158+
Arguments.of("should return false when ",TFCEnum.CF, false)
159+
);
160+
}
161+
125162
}

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/dto/ResumedDataTemplateTest.java

Lines changed: 60 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,25 @@
55
package org.lfenergy.compas.sct.commons.dto;
66

77
import org.junit.jupiter.api.Test;
8+
import org.junit.jupiter.params.ParameterizedTest;
9+
import org.junit.jupiter.params.provider.Arguments;
10+
import org.junit.jupiter.params.provider.MethodSource;
811
import org.lfenergy.compas.scl2007b4.model.TFCEnum;
912
import org.lfenergy.compas.scl2007b4.model.TPredefinedCDCEnum;
1013
import org.lfenergy.compas.scl2007b4.model.TVal;
1114

1215
import java.util.List;
1316
import java.util.Map;
17+
import java.util.stream.Stream;
1418

19+
import static org.assertj.core.api.Assertions.assertThat;
1520
import static org.junit.jupiter.api.Assertions.*;
21+
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
22+
import static org.lfenergy.compas.sct.commons.util.CommonConstants.STVAL;
1623

1724
class ResumedDataTemplateTest {
1825

26+
public static final String CTL_MODEL = "ctlModel";
1927
@Test
2028
void testGetObjRef(){
2129
String expected = "IEDLDTM/prelnclass1.do.sdo1.sdo2.da.bda1.bda2";
@@ -148,12 +156,58 @@ void testCopyFrom() {
148156
assertThrows(IllegalArgumentException.class, () -> rDtt_t.setFc(TFCEnum.BL));
149157
}
150158

151-
@Test
152-
void testIsUpdatable(){
153-
ResumedDataTemplate rDtt = DTO.createRTT("pre","lnclass","1");
154-
assertTrue(rDtt.isUpdatable());
159+
/**
160+
* Known Fc = CF, DC, SG, SP, ST , SE
161+
*/
162+
@ParameterizedTest
163+
@MethodSource("daParametersProviderUpdatable")
164+
void isUpdatable_case0(String testName, String daName, TFCEnum fc, boolean valImport) {
165+
//Given
166+
ResumedDataTemplate rDTT = new ResumedDataTemplate();
167+
rDTT.setDoName(new DoTypeName(MOD_DO_NAME));
168+
rDTT.setDaName(new DaTypeName(daName));
169+
rDTT.setFc(fc);
170+
rDTT.setValImport(valImport);
171+
//When
172+
boolean isRdttUpdatable = rDTT.isUpdatable();
173+
// Then
174+
assertThat(isRdttUpdatable).isTrue();
175+
}
155176

156-
rDtt.getDaName().setFc(TFCEnum.BL);
157-
assertFalse(rDtt.isUpdatable());
177+
private static Stream<Arguments> daParametersProviderUpdatable() {
178+
return Stream.of(
179+
Arguments.of("should return true when Mod", STVAL, TFCEnum.CF, true),
180+
Arguments.of("should return true when Mod", STVAL, TFCEnum.CF, false),
181+
Arguments.of("should return true when Mod", STVAL, TFCEnum.MX, true),
182+
Arguments.of("should return true when Mod", STVAL, TFCEnum.MX, false),
183+
Arguments.of("should return true when Mod", STVAL, null, true),
184+
Arguments.of("should return true when Mod", STVAL, null, false),
185+
Arguments.of("should return true when Mod", CTL_MODEL, TFCEnum.CF, true)
186+
);
187+
}
188+
189+
@ParameterizedTest
190+
@MethodSource("daParametersProviderNotUpdatable")
191+
void isUpdatable_case1(String testName, String daName, TFCEnum fc, boolean valImport) {
192+
//Given
193+
ResumedDataTemplate rDTT = new ResumedDataTemplate();
194+
rDTT.setDoName(new DoTypeName(MOD_DO_NAME));
195+
rDTT.setDaName(new DaTypeName(daName));
196+
rDTT.setFc(fc);
197+
rDTT.setValImport(valImport);
198+
//When
199+
boolean isRdttUpdatable = rDTT.isUpdatable();
200+
// Then
201+
assertThat(isRdttUpdatable).isFalse();
202+
}
203+
204+
private static Stream<Arguments> daParametersProviderNotUpdatable() {
205+
return Stream.of(
206+
Arguments.of("should return false when Mod", CTL_MODEL, TFCEnum.CF, false),
207+
Arguments.of("should return false when Mod", CTL_MODEL, TFCEnum.MX, true),
208+
Arguments.of("should return false when Mod", CTL_MODEL, TFCEnum.MX, false),
209+
Arguments.of("should return false when Mod", CTL_MODEL, null, true),
210+
Arguments.of("should return false when Mod", CTL_MODEL, null, false)
211+
);
158212
}
159213
}

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/scl/SclServiceTest.java

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import java.util.stream.Stream;
2222

2323
import static org.assertj.core.api.Assertions.assertThat;
24-
import static org.assertj.core.api.Assertions.assertThatCode;
2524
import static org.junit.jupiter.api.Assertions.*;
2625
import static org.lfenergy.compas.sct.commons.testhelpers.DataTypeUtils.createDa;
2726
import static org.lfenergy.compas.sct.commons.testhelpers.DataTypeUtils.createDo;
@@ -855,24 +854,6 @@ void updateLDeviceStatus_shouldReturnUpdatedFile() throws Exception {
855854
assertEquals("off", getLDeviceStatusValue(sclReport.getSclRootAdapter().getCurrentElem(), "IedName3", "LDSUIED").get().getValue());
856855
}
857856

858-
@Test
859-
void updateLDeviceStatus_shouldReturnError_when_DaiNotUpdatable() throws Exception {
860-
// Given
861-
SCL givenScl = SclTestMarshaller.getSCLFromFile("/scd-refresh-lnode/issue68_Test_Dai_Not_Updatable.scd");
862-
assertTrue(getLDeviceStatusValue(givenScl, "IedName1", "LDSUIED").isPresent());
863-
assertEquals("off", getLDeviceStatusValue(givenScl, "IedName1", "LDSUIED").get().getValue());
864-
assertTrue(getLDeviceStatusValue(givenScl, "IedName2", "LDSUIED").isPresent());
865-
assertEquals("on", getLDeviceStatusValue(givenScl, "IedName2", "LDSUIED").get().getValue());
866-
assertFalse(getLDeviceStatusValue(givenScl, "IedName3", "LDSUIED").isPresent());
867-
868-
// When
869-
// Then
870-
assertThatCode(() -> SclService.updateLDeviceStatus(givenScl))
871-
.isInstanceOf(ScdException.class)
872-
.hasMessage("DAI (Mod -stVal) cannot be updated");
873-
}
874-
875-
876857
private Optional<TVal> getLDeviceStatusValue(SCL scl, String iedName, String ldInst){
877858
SclRootAdapter sclRootAdapter = new SclRootAdapter(scl);
878859
IEDAdapter iedAdapter = sclRootAdapter.getIEDAdapterByName(iedName);

sct-commons/src/test/resources/scd-refresh-lnode/issue68_Test_Dai_Not_Updatable.scd renamed to sct-commons/src/test/resources/scd-refresh-lnode/issue_165_enhance_68_Test_Dai_Updatable.scd

File renamed without changes.

0 commit comments

Comments
 (0)