@@ -234,7 +234,7 @@ void manageBindingForLDEPF_when_manyIedSourceFound_should_return_reportMassages(
234234 }
235235
236236 @ Test
237- void manageBindingForLDEPF_when_extRefMatchFlowKindInternalOrExternal_should_update_successfully_the_ExtRef_And_DAI_In_RBDR_bRBDR_LNodes_with_no_report () {
237+ void manageBindingForLDEPF_when_extRefMatchFlowKindInternalOrExternal_forAnalaogChannel_should_update_successfully_the_ExtRef_And_DAI_In_RADR_aRBDR_LNodes_with_no_report () {
238238 //Given
239239 SCL scd = SclTestMarshaller .getSCLFromFile ("/scd-ldepf/scd_ldepf_dataTypeTemplateValid.xml" );
240240
@@ -290,42 +290,63 @@ void manageBindingForLDEPF_when_extRefMatchFlowKindInternalOrExternal_should_upd
290290 List <SclReportItem > sclReportItems = extRefEditorService .manageBindingForLDEPF (scd , epf );
291291 // Then
292292 assertThat (sclReportItems ).isEmpty ();
293- SclTestMarshaller .assertIsMarshallable (scd );
294- TExtRef extRefBindInternally = findExtRef (scd , "IED_NAME1" , "LDEPF" , "DYN_LDEPF_ANALOG CHANNEL 1_1_AnalogueValue_1_instMag_1" );
295- assertThat (extRefBindInternally .getIedName ()).isEqualTo ("IED_NAME1" );
296- assertExtRefIsBoundAccordingTOLDEPF (extRefBindInternally , analogueChannel1WithBayInternalScope );
297-
298- AbstractLNAdapter <?> lnRadr = findLn (scd , "IED_NAME1" , "LDEPF" , "RADR" , "1" , "" );
299- assertThat (getDaiValue (lnRadr , CHNUM1_DO_NAME , DU_DA_NAME ))
300- .isNotEqualTo ("dU_old_val" )
301- .isEqualTo ("V0" );
302- assertThat (getDaiValue (lnRadr , LEVMOD_DO_NAME , SETVAL_DA_NAME ))
303- .isNotEqualTo ("setVal_old_val" )
304- .isEqualTo ("Positive or Rising" );
305- assertThat (getDaiValue (lnRadr , MOD_DO_NAME , STVAL_DA_NAME ))
306- .isNotEqualTo ("off" )
307- .isEqualTo ("on" );
308- assertThat (getDaiValue (lnRadr , SRCREF_DO_NAME , SETSRCREF_DA_NAME ))
309- .isNotEqualTo ("setSrcRef_old_val" )
310- .isEqualTo ("IED_NAME1LDTM1/U01ATVTR11.VolSv.instMag" );
311-
312- AbstractLNAdapter <?> lnAradr = findLn (scd , "IED_NAME1" , "LDEPF" , "RADR" , "1" , "a" );
313- assertThat (getDaiValue (lnAradr , CHNUM1_DO_NAME , DU_DA_NAME ))
314- .isNotEqualTo ("dU_old_val" )
315- .isEqualTo ("V0" );
316- assertThat (getDaiValue (lnAradr , LEVMOD_DO_NAME , SETVAL_DA_NAME ))
317- .isNotEqualTo ("setVal_old_val" )
318- .isEqualTo ("Other" );
319- assertThat (getDaiValue (lnAradr , MOD_DO_NAME , STVAL_DA_NAME ))
320- .isNotEqualTo ("off" )
321- .isEqualTo ("on" );
322- assertThat (getDaiValue (lnAradr , SRCREF_DO_NAME , SETSRCREF_DA_NAME ))
323- .isNotEqualTo ("setSrcRef_old_val" )
324- .isEqualTo ("IED_NAME1LDTM1/U01ATVTR11.VolSv.q" );
325-
326- TExtRef extRefBindExternally = findExtRef (scd , "IED_NAME1" , "LDEPF" , "DYN_LDEPF_ANALOG CHANNEL 10_1_AnalogueValue_1_cVal_1" );
327- assertThat (extRefBindExternally .getIedName ()).isEqualTo ("IED_NAME2" );
328- assertExtRefIsBoundAccordingTOLDEPF (extRefBindExternally , analogueChannel10WithBayExternalBayScope );
293+ assertThat (scd .getIED ())
294+ .filteredOn (tied -> tied .getName ().equals ("IED_NAME1" ))
295+ .flatExtracting (TIED ::getAccessPoint )
296+ .extracting (TAccessPoint ::getServer )
297+ .flatExtracting (TServer ::getLDevice )
298+ .filteredOn (tlDevice -> tlDevice .getInst ().equals (LDEVICE_LDEPF ))
299+ .allSatisfy (tlDevice -> {
300+ // Binding properties should be set including Service Type
301+ assertThat (tlDevice .getLN0 ().getInputs ().getExtRef ())
302+ .filteredOn (tExtRef -> tExtRef .getDesc ().contains ("ANALOG" ))
303+ .extracting (TExtRef ::getIedName , TExtRef ::getLdInst , TExtRef ::getLnClass , TExtRef ::getLnInst , TExtRef ::getDoName , TExtRef ::getServiceType )
304+ .containsExactlyInAnyOrder (tuple ("IED_NAME1" , "LDTM1" , List .of ("TVTR" ), "11" , "VolSv" , null ),
305+ tuple ("IED_NAME2" , "LDPHAS1" , List .of ("MMXU" ), "101" , "PhV" , TServiceType .SMV ));
306+ //LN class RADR
307+ assertThat (tlDevice .getLN ())
308+ .filteredOn (tln -> tln .getLnClass ().contains ("RADR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
309+ .allSatisfy (tln -> {
310+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("V0" );
311+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
312+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo ("Positive or Rising" );
313+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDTM1/U01ATVTR11.VolSv.instMag" );
314+ });
315+ // for Analog channel aRADR should not be configured, instead configuring aRBDR
316+ assertThat (tlDevice .getLN ())
317+ .filteredOn (tln -> tln .getLnClass ().contains ("RADR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("a" ))
318+ .allSatisfy (tln -> {
319+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("dU_old_val" );
320+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("off" );
321+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo ("setVal_old_val" );
322+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("setSrcRef_old_val" );
323+ });
324+ //LN class RBDR
325+ assertThat (tlDevice .getLN ())
326+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
327+ .allSatisfy (tln -> {
328+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("dU_old_val" );
329+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("off" );
330+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo ("setVal_old_val" );
331+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("setSrcRef_old_val" );
332+ });
333+ assertThat (tlDevice .getLN ())
334+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("a" ))
335+ .allSatisfy (tln -> {
336+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("V0" );
337+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
338+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo ("Other" );
339+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDTM1/U01ATVTR11.VolSv.q" );
340+ });
341+ assertThat (tlDevice .getLN ())
342+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("b" ))
343+ .allSatisfy (tln -> {
344+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("dU_old_val" );
345+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("off" );
346+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo ("setVal_old_val" );
347+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("setSrcRef_old_val" );
348+ });
349+ });
329350 }
330351
331352 private void assertExtRefIsBoundAccordingTOLDEPF (TExtRef extRef , TChannel setting ) {
@@ -837,6 +858,41 @@ void manageBindingForLDEPF_should_update_binding_properties_when_internal_bindin
837858 .filteredOn (tExtRef -> tExtRef .getDesc ().contains ("ANALOG" ))
838859 .extracting (TExtRef ::getIedName , TExtRef ::getLdInst , TExtRef ::getLnClass , TExtRef ::getLnInst , TExtRef ::getDoName , TExtRef ::isSetServiceType )
839860 .containsExactlyInAnyOrder (tuple ("IED_NAME1" , "LDPX" , List .of ("PTRC" ), "0" , "Str" , false ));
861+
862+ //ANALOG: configure LN RADR and aRBDR
863+ assertThat (tlDevice .getLN ())
864+ .filteredOn (tln -> tln .getLnClass ().contains ("RADR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
865+ .allSatisfy (tln -> {
866+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
867+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
868+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .POSITIVE_OR_RISING .value ());
869+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDPX/PTRC0.Str.general" );
870+ });
871+ assertThat (tlDevice .getLN ())
872+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("a" ))
873+ .allSatisfy (tln -> {
874+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
875+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
876+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .OTHER .value ());
877+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDPX/PTRC0.Str.q" );
878+ });
879+ //DIGITAL: configure LN RBDR and bRBDR
880+ assertThat (tlDevice .getLN ())
881+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
882+ .allSatisfy (tln -> {
883+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
884+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
885+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .POSITIVE_OR_RISING .value ());
886+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDPX/PTRC0.Str.general" );
887+ });
888+ assertThat (tlDevice .getLN ())
889+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("b" ))
890+ .allSatisfy (tln -> {
891+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
892+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
893+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .OTHER .value ());
894+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME1LDPX/PTRC0.Str.q" );
895+ });
840896 });
841897 }
842898
@@ -902,6 +958,41 @@ void manageBindingForLDEPF_should_update_binding_properties_when_external_bindin
902958 .filteredOn (tExtRef -> tExtRef .getDesc ().contains ("ANALOG" ))
903959 .extracting (TExtRef ::getIedName , TExtRef ::getLdInst , TExtRef ::getLnClass , TExtRef ::getLnInst , TExtRef ::getDoName , TExtRef ::getServiceType )
904960 .containsExactlyInAnyOrder (tuple ("IED_NAME2" , "LDPX" , List .of ("PTRC" ), "0" , "Str" , TServiceType .SMV ));
961+
962+ //ANALOG: configure LN RADR and aRBDR
963+ assertThat (tlDevice .getLN ())
964+ .filteredOn (tln -> tln .getLnClass ().contains ("RADR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
965+ .allSatisfy (tln -> {
966+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
967+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
968+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .POSITIVE_OR_RISING .value ());
969+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME2LDPX/PTRC0.Str.general" );
970+ });
971+ assertThat (tlDevice .getLN ())
972+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("a" ))
973+ .allSatisfy (tln -> {
974+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
975+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
976+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .OTHER .value ());
977+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME2LDPX/PTRC0.Str.q" );
978+ });
979+ //DIGITAL: configure LN RBDR and bRBDR
980+ assertThat (tlDevice .getLN ())
981+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && !tln .isSetPrefix ())
982+ .allSatisfy (tln -> {
983+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
984+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
985+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .POSITIVE_OR_RISING .value ());
986+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME2LDPX/PTRC0.Str.general" );
987+ });
988+ assertThat (tlDevice .getLN ())
989+ .filteredOn (tln -> tln .getLnClass ().contains ("RBDR" ) && tln .getInst ().equals ("1" ) && tln .getPrefix ().equals ("b" ))
990+ .allSatisfy (tln -> {
991+ assertThat (getDaiValue (tln , CHNUM1_DO_NAME , DU_DA_NAME )).isEqualTo ("MR.PX1" );
992+ assertThat (getDaiValue (tln , MOD_DO_NAME , STVAL_DA_NAME )).isEqualTo ("on" );
993+ assertThat (getDaiValue (tln , LEVMOD_DO_NAME , SETVAL_DA_NAME )).isEqualTo (TChannelLevMod .OTHER .value ());
994+ assertThat (getDaiValue (tln , SRCREF_DO_NAME , SETSRCREF_DA_NAME )).isEqualTo ("IED_NAME2LDPX/PTRC0.Str.q" );
995+ });
905996 });
906997 }
907998
0 commit comments