Skip to content

Commit de64591

Browse files
feat(#439): Add generic function matchesLn to LnService
Signed-off-by: JAFFRE Guillaume <[email protected]>
1 parent f92c09c commit de64591

File tree

2 files changed

+103
-1
lines changed

2 files changed

+103
-1
lines changed

sct-commons/src/main/java/org/lfenergy/compas/sct/commons/LnService.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,17 @@
55
package org.lfenergy.compas.sct.commons;
66

77
import lombok.extern.slf4j.Slf4j;
8+
import org.apache.commons.lang3.StringUtils;
89
import org.lfenergy.compas.scl2007b4.model.*;
910
import org.lfenergy.compas.sct.commons.api.LnEditor;
1011
import org.lfenergy.compas.sct.commons.domain.*;
1112
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
1213

14+
import java.util.ArrayList;
1315
import java.util.Collection;
16+
import java.util.List;
1417
import java.util.Optional;
1518
import java.util.function.Predicate;
16-
import java.util.*;
1719
import java.util.stream.Stream;
1820

1921
import static org.lfenergy.compas.sct.commons.util.CommonConstants.MOD_DO_NAME;
@@ -175,6 +177,16 @@ public void completeFromDAInstance(TIED tied, String ldInst, TAnyLN anyLN, DoLin
175177
});
176178
}
177179

180+
public boolean matchesLn(TAnyLN tAnyLN, String lnClass, String lnInst, String lnPrefix) {
181+
return switch (tAnyLN) {
182+
case TLN ln -> lnClass.equals(ln.getLnClass().getFirst())
183+
&& lnInst.equals(ln.getInst())
184+
&& (StringUtils.trimToEmpty(lnPrefix).equals(StringUtils.trimToEmpty(ln.getPrefix())));
185+
case LN0 ignored -> lnClass.equals(TLLN0Enum.LLN_0.value());
186+
default -> throw new IllegalStateException("Unexpected value: " + tAnyLN);
187+
};
188+
}
189+
178190
private boolean hasSettingGroup(TDAI tdai) {
179191
return tdai.isSetVal() && tdai.getVal().stream().anyMatch(tVal -> tVal.isSetSGroup() && tVal.getSGroup() > 0);
180192
}

sct-commons/src/test/java/org/lfenergy/compas/sct/commons/LnServiceTest.java

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@
44

55
package org.lfenergy.compas.sct.commons;
66

7+
import org.assertj.core.api.Assertions;
78
import org.assertj.core.groups.Tuple;
89
import org.junit.jupiter.api.Test;
910
import org.junit.jupiter.params.ParameterizedTest;
11+
import org.junit.jupiter.params.provider.Arguments;
1012
import org.junit.jupiter.params.provider.CsvSource;
1113
import org.junit.jupiter.params.provider.MethodSource;
1214
import org.lfenergy.compas.scl2007b4.model.*;
@@ -15,6 +17,7 @@
1517
import org.lfenergy.compas.sct.commons.util.ActiveStatus;
1618

1719
import java.util.*;
20+
import java.util.stream.Stream;
1821

1922
import static org.assertj.core.api.Assertions.assertThat;
2023

@@ -580,5 +583,92 @@ private TDAI initDOAndDAInstances(TAnyLN tAnyLN,
580583
return dai;
581584
}
582585

586+
@ParameterizedTest
587+
@MethodSource("provideLnAttributesForMatchingLns")
588+
void matchesLn_should_return_True_in_these_LN_cases(String lnClass, String lnInst, String lnPrefix) {
589+
//GIVEN:
590+
TLN tln = new TLN();
591+
tln.getLnClass().add(lnClass);
592+
tln.setInst(lnInst);
593+
tln.setPrefix(lnPrefix);
594+
//WHEN:
595+
Boolean response = lnService.matchesLn(tln, lnClass, lnInst, lnPrefix);
596+
//THEN:
597+
assertThat(response).isTrue();
598+
}
599+
600+
private static Stream<Arguments> provideLnAttributesForMatchingLns() {
601+
return Stream.of(
602+
Arguments.of("LPHD", "1", "LnPrefix", "LPHD", "1", "LnPrefix"),
603+
Arguments.of("LPHD", "1", null, "LPHD", "1", null)
604+
);
605+
}
606+
607+
@ParameterizedTest
608+
@MethodSource("provideLnAttributesForUnMatchingLns")
609+
void matchesLn_should_return_False_in_these_LN_cases(String lnClass, String lnInst, String lnPrefix, String lnClassString, String lnInstString, String lnPrefixString) {
610+
//GIVEN:
611+
TLN tln = new TLN();
612+
tln.getLnClass().add(lnClass);
613+
tln.setInst(lnInst);
614+
tln.setPrefix(lnPrefix);
615+
//WHEN:
616+
Boolean response = lnService.matchesLn(tln, lnClassString, lnInstString, lnPrefixString);
617+
//THEN:
618+
assertThat(response).isFalse();
619+
}
620+
621+
private static Stream<Arguments> provideLnAttributesForUnMatchingLns() {
622+
return Stream.of(
623+
Arguments.of("FAKE", "1", "LnPrefix", "LPHD", "1", "LnPrefix"),
624+
Arguments.of("LPHD", "FAKE", "LnPrefix", "LPHD", "1", "LnPrefix"),
625+
Arguments.of("LPHD", "1", "FAKE", "LPHD", "1", "LnPrefix"),
626+
Arguments.of("FAKE", "1", null, "LPHD", "1", null),
627+
Arguments.of("LPHD", "FAKE", null, "LPHD", "1", null)
628+
);
629+
}
630+
631+
632+
@ParameterizedTest
633+
@MethodSource("provideLn0AttributesForMatchingLn0s")
634+
void matchesLn_should_return_True_for_matching_LLN0(String lnClass, String lnInst, String lnPrefix) {
635+
//GIVEN:
636+
LN0 ln0 = new LN0();
637+
ln0.getLnClass().add(lnClass);
638+
//WHEN:
639+
Boolean response = lnService.matchesLn(ln0, lnClass, lnInst, lnPrefix);
640+
//THEN:
641+
assertThat(response).isTrue();
642+
}
643+
644+
private static Stream<Arguments> provideLn0AttributesForMatchingLn0s() {
645+
return Stream.of(
646+
Arguments.of("LLN0", "", ""),
647+
Arguments.of("LLN0", "1", ""),
648+
Arguments.of("LLN0", "", "LnPrefix")
649+
);
650+
}
651+
652+
@Test
653+
void matchesLn_should_return_False_for_Unmatching_LLN0() {
654+
//GIVEN:
655+
LN0 ln0 = new LN0();
656+
ln0.getLnClass().add("LLN0");
657+
//WHEN:
658+
Boolean response = lnService.matchesLn(ln0, "LPHD", "", "");
659+
//THEN:
660+
assertThat(response).isFalse();
661+
}
662+
663+
@Test
664+
void matchesLn_should_throw_an_exception() {
665+
//GIVEN:
666+
TLN0 tln0 = new TLN0();
667+
tln0.getLnClass().add("LLN0");
668+
//WHEN && //THEN:
669+
Assertions.assertThatThrownBy(() -> lnService.matchesLn(tln0, "LLN0", "", ""))
670+
.isInstanceOf(IllegalStateException.class)
671+
.hasMessageContaining("Unexpected value: ");
672+
}
583673

584674
}

0 commit comments

Comments
 (0)