diff --git a/fixture-monkey/src/main/java/com/navercorp/fixturemonkey/arbitrary/ArbitraryNode.java b/fixture-monkey/src/main/java/com/navercorp/fixturemonkey/arbitrary/ArbitraryNode.java index 283f58312..0ba6fe767 100644 --- a/fixture-monkey/src/main/java/com/navercorp/fixturemonkey/arbitrary/ArbitraryNode.java +++ b/fixture-monkey/src/main/java/com/navercorp/fixturemonkey/arbitrary/ArbitraryNode.java @@ -18,6 +18,7 @@ package com.navercorp.fixturemonkey.arbitrary; +import static com.navercorp.fixturemonkey.Constants.DEFAULT_ELEMENT_MAX_SIZE; import static com.navercorp.fixturemonkey.Constants.HEAD_NAME; import static com.navercorp.fixturemonkey.Constants.NO_OR_ALL_INDEX_INTEGER_VALUE; @@ -114,7 +115,11 @@ public void initializeElementSize() { Size size = type.getAnnotation(Size.class); if (size != null) { min = size.min(); - max = size.max(); + if (size.max() != Integer.MAX_VALUE) { // not initialized for preventing OOM + max = size.max(); + } else { + max = min + DEFAULT_ELEMENT_MAX_SIZE; + } } NotEmpty notEmpty = type.getAnnotation(NotEmpty.class); diff --git a/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTest.java b/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTest.java index a4210fd26..9ee0e4c38 100644 --- a/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTest.java +++ b/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTest.java @@ -18,6 +18,7 @@ package com.navercorp.fixturemonkey.test; +import static com.navercorp.fixturemonkey.Constants.DEFAULT_ELEMENT_MAX_SIZE; import static com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.SUT; import static java.util.stream.Collectors.toList; import static org.assertj.core.api.BDDAssertions.then; @@ -52,6 +53,7 @@ import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntArray; import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntWithAnnotation; import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntegerArray; +import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntegerListAnnotatedBySizeWithoutMax; import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntegerListWithNotEmpty; import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntegerOptional; import com.navercorp.fixturemonkey.test.FixtureMonkeyTestSpecs.IntegerSet; @@ -1337,4 +1339,10 @@ void giveMeQueue(@ForAll StringQueue expected) { void giveMeNestedQueue(@ForAll NestedStringQueue expected) { then(expected.getValues()).isNotNull(); } + + @Property + @Domain(FixtureMonkeyTestSpecs.class) + void giveMeListAnnotatedBySizeWithoutMax(@ForAll IntegerListAnnotatedBySizeWithoutMax actual) { + then(actual.getValues()).hasSizeBetween(1, 1 + DEFAULT_ELEMENT_MAX_SIZE); + } } diff --git a/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTestSpecs.java b/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTestSpecs.java index 92d41be21..9ae887a4c 100644 --- a/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTestSpecs.java +++ b/fixture-monkey/src/test/java/com/navercorp/fixturemonkey/test/FixtureMonkeyTestSpecs.java @@ -31,6 +31,7 @@ import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotNull; import javax.validation.constraints.Positive; +import javax.validation.constraints.Size; import net.jqwik.api.Arbitrary; import net.jqwik.api.Provide; @@ -66,6 +67,7 @@ class FixtureMonkeyTestSpecs extends AbstractDomainContextBase { registerArbitrary(ListWithAnnotation.class, listWithAnnotation()); registerArbitrary(StringQueue.class, stringQueue()); registerArbitrary(NestedStringQueue.class, nestedStringQueue()); + registerArbitrary(IntegerListAnnotatedBySizeWithoutMax.class, integerListAnnotatedBySizeWithoutMax()); } @Provide @@ -285,6 +287,17 @@ Arbitrary nestedStringQueue() { return SUT.giveMeArbitrary(NestedStringQueue.class); } + @Data + public static class IntegerListAnnotatedBySizeWithoutMax { + @Size(min = 1) + private List values; + } + + @Provide + Arbitrary integerListAnnotatedBySizeWithoutMax() { + return SUT.giveMeArbitrary(IntegerListAnnotatedBySizeWithoutMax.class); + } + public static class DefaultArbitraryGroup { public DefaultArbitraryGroup() { }