2121import static org .assertj .core .api .BDDAssertions .then ;
2222
2323import java .util .ArrayList ;
24+ import java .util .Arrays ;
25+ import java .util .Collections ;
2426import java .util .List ;
2527
2628import net .jqwik .api .Property ;
2729import net .jqwik .api .PropertyDefaults ;
2830
2931import com .navercorp .fixturemonkey .FixtureMonkey ;
32+
3033import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .ComplexObject ;
3134import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .DoubleNestedStringListWrapper ;
35+ import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .ListListStringObject ;
36+ import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .NestedStringArrayWrapper ;
3237import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .NestedStringListWrapper ;
38+ import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .StringArrayWrapper ;
3339import com .navercorp .fixturemonkey .test .FixtureMonkeyTestSpecs .StringListWrapper ;
3440
3541@ PropertyDefaults (tries = 10 )
@@ -729,7 +735,7 @@ void setDecomposedMultipleIndicesThenApplyWildcardSize() {
729735 then (actual .get (1 ).getValues ().get (1 )).isEqualTo ("y" );
730736 }
731737
732- @ Property (tries = 1000 )
738+ @ Property (tries = 1 )
733739 void setDecomposedThenApplyWildcardSetOverride () {
734740 // given
735741 List <String > innerList = new ArrayList <>();
@@ -740,6 +746,7 @@ void setDecomposedThenApplyWildcardSetOverride() {
740746 // when
741747 List <StringListWrapper > actual = SUT .giveMeBuilder (NestedStringListWrapper .class )
742748 .set ("values[0].values" , innerList )
749+ .set ("values[1].values" , Arrays .asList ("a" , "b" ))
743750 .thenApply ((obj , builder ) ->
744751 builder .size ("values" , 2 ).size ("values[*].values" , 2 ).set ("values[*].values[*]" , "override" )
745752 )
@@ -921,4 +928,184 @@ void thenApplySizeThenSetNullContainer() {
921928 // then
922929 then (actual .getStrList ()).isNull ();
923930 }
931+
932+ @ Property
933+ void setDecomposedThenApplyWildcardSetOverrideWithoutSizeChange () {
934+ // given
935+ List <String > innerList = Arrays .asList ("1" , "2" , "3" );
936+
937+ // when
938+ List <StringListWrapper > actual = SUT .giveMeBuilder (NestedStringListWrapper .class )
939+ .size ("values" , 2 )
940+ .size ("values[*].values" , 3 )
941+ .set ("values[0].values" , innerList )
942+ .set ("values[1].values" , innerList )
943+ .thenApply ((obj , builder ) ->
944+ builder .set ("values[*].values[*]" , "override" )
945+ )
946+ .sample ()
947+ .getValues ();
948+
949+ // then
950+ then (actual ).hasSize (2 );
951+ for (int j = 0 ; j < 2 ; j ++) {
952+ then (actual .get (j ).getValues ()).hasSize (3 );
953+ for (int k = 0 ; k < 3 ; k ++) {
954+ then (actual .get (j ).getValues ().get (k )).isEqualTo ("override" );
955+ }
956+ }
957+ }
958+
959+ @ Property
960+ void setDecomposedArrayThenApplyWildcardSetOverride () {
961+ // given
962+ StringArrayWrapper wrapper = new StringArrayWrapper ();
963+ wrapper .setValues (new String []{"1" , "2" , "3" });
964+
965+ // when
966+ List <StringArrayWrapper > actual = SUT .giveMeBuilder (NestedStringArrayWrapper .class )
967+ .set ("values" , Collections .singletonList (wrapper ))
968+ .thenApply ((obj , builder ) ->
969+ builder .size ("values" , 2 )
970+ .size ("values[*].values" , 2 )
971+ .set ("values[*].values[*]" , "override" )
972+ )
973+ .sample ()
974+ .getValues ();
975+
976+ // then
977+ then (actual ).hasSize (2 );
978+ for (int j = 0 ; j < 2 ; j ++) {
979+ then (actual .get (j ).getValues ()).hasSize (2 );
980+ for (int k = 0 ; k < 2 ; k ++) {
981+ then (actual .get (j ).getValues ()[k ]).isEqualTo ("override" );
982+ }
983+ }
984+ }
985+
986+ @ Property
987+ void setDecomposedAfterThenApplyWildcardSetOverride () {
988+ // given
989+ List <String > innerList = Arrays .asList ("a" , "b" );
990+
991+ // when
992+ List <StringListWrapper > actual = SUT .giveMeBuilder (NestedStringListWrapper .class )
993+ .thenApply ((obj , builder ) ->
994+ builder .set ("values[*].values[*]" , "override" )
995+ )
996+ .size ("values" , 2 )
997+ .size ("values[*].values" , 2 )
998+ .set ("values[0].values" , innerList )
999+ .sample ()
1000+ .getValues ();
1001+
1002+ // then
1003+ then (actual ).hasSize (2 );
1004+ then (actual .get (0 ).getValues ()).hasSize (2 );
1005+ then (actual .get (0 ).getValues ().get (0 )).isEqualTo ("a" );
1006+ then (actual .get (0 ).getValues ().get (1 )).isEqualTo ("b" );
1007+ }
1008+
1009+ @ Property (tries = 1 )
1010+ void setDecomposedObjectThenApplyWildcardSetOverride () {
1011+ // when
1012+ StringListWrapper stringListWrapper = new StringListWrapper ();
1013+ stringListWrapper .setValues (Collections .singletonList ("1" ));
1014+ List <StringListWrapper > actual = SUT .giveMeBuilder (NestedStringListWrapper .class )
1015+ .set ("values" , Collections .singletonList (stringListWrapper ))
1016+ .thenApply ((obj , builder ) ->
1017+ builder .size ("values" , 2 )
1018+ .size ("values[*].values" , 2 )
1019+ .set ("values[*].values[*]" , "override" )
1020+ )
1021+ .sample ()
1022+ .getValues ();
1023+
1024+ // then
1025+ then (actual ).hasSize (2 );
1026+ then (actual .get (0 ).getValues ()).hasSize (2 );
1027+ then (actual .get (0 ).getValues ().get (0 )).isEqualTo ("override" );
1028+ then (actual .get (0 ).getValues ().get (1 )).isEqualTo ("override" );
1029+ then (actual .get (1 ).getValues ()).hasSize (2 );
1030+ then (actual .get (1 ).getValues ().get (0 )).isEqualTo ("override" );
1031+ then (actual .get (1 ).getValues ().get (1 )).isEqualTo ("override" );
1032+ }
1033+
1034+ @ Property (tries = 1 )
1035+ void setDecomposedNestedContainerThenApplyWildcardSetOverride () {
1036+ // given
1037+ List <List <String >> values = Arrays .asList (
1038+ Arrays .asList ("a" , "b" ),
1039+ Arrays .asList ("c" , "d" )
1040+ );
1041+
1042+ // when
1043+ List <List <String >> actual = SUT .giveMeBuilder (ListListStringObject .class )
1044+ .set ("values" , values )
1045+ .thenApply ((obj , builder ) ->
1046+ builder .size ("values" , 2 )
1047+ .size ("values[*]" , 2 )
1048+ .set ("values[*][*]" , "override" )
1049+ )
1050+ .sample ()
1051+ .getValues ();
1052+
1053+ // then
1054+ then (actual ).hasSize (2 );
1055+ for (int i = 0 ; i < 2 ; i ++) {
1056+ then (actual .get (i )).hasSize (2 );
1057+ then (actual .get (i ).get (0 )).isEqualTo ("override" );
1058+ then (actual .get (i ).get (1 )).isEqualTo ("override" );
1059+ }
1060+ }
1061+
1062+ @ Property (tries = 1 )
1063+ void listListStringSizeAndSet () {
1064+ // when
1065+ List <List <String >> actual = SUT .giveMeBuilder (ListListStringObject .class )
1066+ .size ("values" , 2 )
1067+ .size ("values[*]" , 2 )
1068+ .set ("values[*][*]" , "test" )
1069+ .sample ()
1070+ .getValues ();
1071+
1072+ // then
1073+ then (actual ).hasSize (2 );
1074+ for (int i = 0 ; i < 2 ; i ++) {
1075+ then (actual .get (i )).hasSize (2 );
1076+ then (actual .get (i ).get (0 )).isEqualTo ("test" );
1077+ then (actual .get (i ).get (1 )).isEqualTo ("test" );
1078+ }
1079+ }
1080+
1081+ @ Property (tries = 1 )
1082+ void listListStringSetThenSize () {
1083+ // given
1084+ FixtureMonkey fm = FixtureMonkey .builder ()
1085+ .defaultNotNull (true )
1086+ .plugin (new JavaNodeTreeAdapterPlugin ())
1087+ .build ();
1088+
1089+ List <List <String >> values = Arrays .asList (
1090+ Arrays .asList ("a" , "b" ),
1091+ Arrays .asList ("c" , "d" )
1092+ );
1093+
1094+ // when
1095+ List <List <String >> actual = fm .giveMeBuilder (ListListStringObject .class )
1096+ .set ("values" , values )
1097+ .size ("values" , 2 )
1098+ .size ("values[*]" , 2 )
1099+ .set ("values[*][*]" , "override" )
1100+ .sample ()
1101+ .getValues ();
1102+
1103+ // then
1104+ then (actual ).hasSize (2 );
1105+ for (int i = 0 ; i < 2 ; i ++) {
1106+ then (actual .get (i )).hasSize (2 );
1107+ then (actual .get (i ).get (0 )).isEqualTo ("override" );
1108+ then (actual .get (i ).get (1 )).isEqualTo ("override" );
1109+ }
1110+ }
9241111}
0 commit comments