77import org .apache .commons .lang3 .tuple .Pair ;
88import org .assertj .core .groups .Tuple ;
99import org .junit .jupiter .api .Test ;
10+ import org .junit .jupiter .api .extension .ExtendWith ;
1011import org .lfenergy .compas .scl2007b4 .model .*;
1112import org .lfenergy .compas .sct .commons .dto .DaTypeName ;
1213import org .lfenergy .compas .sct .commons .dto .DoTypeName ;
1516import org .lfenergy .compas .sct .commons .scl .SclRootAdapter ;
1617import org .lfenergy .compas .sct .commons .testhelpers .SclTestMarshaller ;
1718import org .lfenergy .compas .sct .commons .util .CommonConstants ;
19+ import org .mockito .junit .jupiter .MockitoExtension ;
1820
1921import java .util .*;
2022
2123import static org .assertj .core .api .Assertions .*;
2224import static org .junit .jupiter .api .Assertions .assertDoesNotThrow ;
2325import static org .lfenergy .compas .sct .commons .util .SclConstructorHelper .newVal ;
2426
27+ @ ExtendWith (MockitoExtension .class )
2528class DOIAdapterTest {
2629
2730 @ Test
@@ -183,7 +186,7 @@ void DAIAdapter_update_when_valImport_is_set_to_false_but_da_is_Mod_StVal_should
183186 }
184187
185188 @ Test
186- void testFindDeepestMatch () throws Exception {
189+ void testFindDeepestMatch () {
187190 // Given
188191 SCL scd = SclTestMarshaller .getSCLFromFile ("/ied-test-schema-conf/ied_unit_test.xml" );
189192 SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
@@ -215,7 +218,6 @@ void testFindDeepestMatch() throws Exception {
215218 assertThat (pair .getLeft ()).isInstanceOf (SDIAdapter .DAIAdapter .class );
216219 }
217220
218-
219221 private DOIAdapter .DAIAdapter initInnerDAIAdapter (String doName , String daName ) {
220222 TDOI tdoi = new TDOI ();
221223 tdoi .setName (doName );
@@ -302,8 +304,7 @@ void findDataAdapterByName_should_return_DAIAdapter_when_DA_name_dont_exist() {
302304 @ Test
303305 void updateDaiFromExtRef_should_update_setSrcXX_values_when_ExtRef_desc_suffix_ends_with_1 () {
304306 // Given
305- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
306- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
307+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
307308 TDAI daiSrcRef = new TDAI ();
308309 daiSrcRef .setName (DOIAdapter .DA_NAME_SET_SRC_REF );
309310 TDAI daiSrcCb = new TDAI ();
@@ -331,8 +332,7 @@ private static Optional<TVal> getDaiValOfDoi(DOIAdapter doiAdapter, String daNam
331332 @ Test
332333 void updateDaiFromExtRef_should_update_setSrcRef_value_but_not_setSrcCB_when_ExtRef_dont_contains_CB () {
333334 // Given
334- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
335- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
335+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
336336 TDAI daiSrcRef = new TDAI ();
337337 daiSrcRef .setName (DOIAdapter .DA_NAME_SET_SRC_REF );
338338 doiAdapter .getCurrentElem ().getSDIOrDAI ().add (daiSrcRef );
@@ -353,8 +353,7 @@ void updateDaiFromExtRef_should_update_setSrcRef_value_but_not_setSrcCB_when_Ext
353353 @ Test
354354 void updateDaiFromExtRef_should_update_setSrcXX_and_setTstXX_values_when_ExtRef_desc_suffix_ends_with_1_and_3 () {
355355 // Given
356- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
357- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
356+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
358357 TDAI daiSrcRef = new TDAI ();
359358 daiSrcRef .setName (DOIAdapter .DA_NAME_SET_SRC_REF );
360359 doiAdapter .getCurrentElem ().getSDIOrDAI ().add (daiSrcRef );
@@ -406,8 +405,7 @@ private static TExtRef givenExtRef(int num, boolean withCbName) {
406405 @ Test
407406 void updateDaiFromExtRef_should_update_only_setSrcRef_and_setTstRef_values_when_ExtRef_desc_suffix_ends_with_1_and_3_without_CB () {
408407 // Given
409- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
410- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
408+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
411409 TDAI daiSrcRef = new TDAI ();
412410 daiSrcRef .setName (DOIAdapter .DA_NAME_SET_SRC_REF );
413411 doiAdapter .getCurrentElem ().getSDIOrDAI ().add (daiSrcRef );
@@ -468,8 +466,7 @@ void updateDaiFromExtRef_should_return_warning_report_when_none_ExtRef_endin_wit
468466 @ Test
469467 void updateDaiFromExtRef_should_create_DAI_when_no_DAI_name_setSrcRef () {
470468 // Given
471- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
472- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
469+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
473470
474471 TExtRef extRef1 = givenExtRef (1 , false );
475472
@@ -504,8 +501,7 @@ void updateDaiFromExtRef_should_return_filled_ReportItem_when_no_ExtRef_in_LNode
504501 @ Test
505502 void updateDaiFromExtRef_should_compose_correct_name_when_optional_ExtRef_attributes_are_missing () {
506503 // Given
507- DOIAdapter .DAIAdapter daiAdapter = initInnerDAIAdapter ("Do" , "da" );
508- DOIAdapter doiAdapter = daiAdapter .getParentAdapter ();
504+ DOIAdapter doiAdapter = createDOIAdapterInScl ();
509505 TDAI daiSrcRef = new TDAI ();
510506 daiSrcRef .setName (DOIAdapter .DA_NAME_SET_SRC_REF );
511507 doiAdapter .getCurrentElem ().getSDIOrDAI ().add (daiSrcRef );
@@ -569,4 +565,65 @@ void updateDaiFromExtRef_should_throw_exception_when_ExtRef_desc_dont_end_with__
569565 assertThatThrownBy (() -> doiAdapter .updateDaiFromExtRef (extRefList ))
570566 .isInstanceOf (NumberFormatException .class );
571567 }
568+
569+ private DOIAdapter createDOIAdapterInScl () {
570+ TDOI tdoi = new TDOI ();
571+ tdoi .setName ("InRef" );
572+
573+ LN0 ln0 = new LN0 ();
574+ ln0 .setLnType ("T1" );
575+ ln0 .getDOI ().add (tdoi );
576+ TLDevice tlDevice = new TLDevice ();
577+ tlDevice .setInst ("Inst" );
578+ tlDevice .setLN0 (ln0 );
579+ TServer tServer = new TServer ();
580+ tServer .getLDevice ().add (tlDevice );
581+ TAccessPoint tAccessPoint = new TAccessPoint ();
582+ tAccessPoint .setName ("AP_NAME" );
583+ tAccessPoint .setServer (tServer );
584+ TIED tied = new TIED ();
585+ tied .setName ("IED_NAME" );
586+ tied .getAccessPoint ().add (tAccessPoint );
587+ //SCL file
588+ SCL scd = new SCL ();
589+ scd .getIED ().add (tied );
590+ THeader tHeader = new THeader ();
591+ tHeader .setRevision ("1" );
592+ scd .setHeader (tHeader );
593+ // DataTypeTemplate
594+ TLNodeType tlNodeType = new TLNodeType ();
595+ tlNodeType .setId ("T1" );
596+ tlNodeType .getLnClass ().add ("LLN0" );
597+ TDO tdo = new TDO ();
598+ tdo .setName ("InRef" );
599+ tdo .setType ("REF" );
600+ tlNodeType .getDO ().add (tdo );
601+ TDOType tdoType = new TDOType ();
602+ tdoType .setId ("REF" );
603+ TDA tda1 = createDa (DOIAdapter .DA_NAME_SET_SRC_REF );
604+ TDA tda2 = createDa (DOIAdapter .DA_NAME_SET_SRC_CB );
605+ TDA tda3 = createDa (DOIAdapter .DA_NAME_SET_TST_REF );
606+ TDA tda4 = createDa (DOIAdapter .DA_NAME_SET_TST_CB );
607+ tdoType .getSDOOrDA ().addAll (List .of (tda1 , tda2 , tda3 , tda4 ));
608+
609+ TDataTypeTemplates tDataTypeTemplates = new TDataTypeTemplates ();
610+ tDataTypeTemplates .getLNodeType ().add (tlNodeType );
611+ tDataTypeTemplates .getDOType ().add (tdoType );
612+ scd .setDataTypeTemplates (tDataTypeTemplates );
613+
614+ SclRootAdapter sclRootAdapter = new SclRootAdapter (scd );
615+ LN0Adapter ln0Adapter = sclRootAdapter .getIEDAdapterByName ("IED_NAME" ).getLDeviceAdapterByLdInst ("Inst" ).getLN0Adapter ();
616+
617+ DOIAdapter doiAdapter = new DOIAdapter (ln0Adapter , tdoi );
618+ return doiAdapter ;
619+ }
620+
621+ private TDA createDa (String daName ) {
622+ TDA tda1 = new TDA ();
623+ tda1 .setName (daName );
624+ tda1 .setValImport (true );
625+ tda1 .setBType (TPredefinedBasicTypeEnum .OBJ_REF );
626+ tda1 .setFc (TFCEnum .SP );
627+ return tda1 ;
628+ }
572629}
0 commit comments