Skip to content

Commit b63eec3

Browse files
author
Befrish
committed
fix #9 Add test cases for Control types, Future and Lazy
1 parent 5497f01 commit b63eec3

10 files changed

+132
-162
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package de.befrish.jqwik.vavr;
2+
3+
import org.hamcrest.Description;
4+
import org.hamcrest.Matcher;
5+
import org.hamcrest.TypeSafeDiagnosingMatcher;
6+
7+
/**
8+
* @author Benno Müller
9+
*/
10+
public final class TestMatchers {
11+
12+
private TestMatchers() {
13+
super();
14+
}
15+
16+
public static Matcher<String> hasOnlyAs() {
17+
return new TypeSafeDiagnosingMatcher<String>() {
18+
@Override
19+
protected boolean matchesSafely(final String item, final Description mismatchDescription) {
20+
mismatchDescription.appendText("String ").appendValue(item);
21+
return item.replaceAll("a", "").isEmpty();
22+
}
23+
24+
@Override
25+
public void describeTo(final Description description) {
26+
description.appendText("String only containing char 'a'");
27+
}
28+
};
29+
}
30+
}

src/test/java/de/befrish/jqwik/vavr/VavrLazyArbitraryTest.java

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package de.befrish.jqwik.vavr;
22

3+
import de.befrish.jqwik.vavr.base.VavrArbitraryTestBase;
34
import io.vavr.Lazy;
45
import net.jqwik.api.Arbitraries;
56
import net.jqwik.api.Arbitrary;
@@ -15,7 +16,7 @@
1516
import static org.hamcrest.Matchers.lessThanOrEqualTo;
1617
import static org.hamcrest.Matchers.notNullValue;
1718

18-
class VavrLazyArbitraryTest {
19+
class VavrLazyArbitraryTest extends VavrArbitraryTestBase<Lazy<Integer>> {
1920

2021
@Provide
2122
Arbitrary<Lazy<Integer>> integersMin3() {
@@ -27,12 +28,6 @@ void generateFrom(@ForAll @From("integersMin3") final Lazy<Integer> lazy) {
2728
assertThat(lazy.get(), is(greaterThanOrEqualTo(3)));
2829
}
2930

30-
@Property
31-
void generate(@ForAll final Lazy<Integer> lazy) {
32-
// Test that the ArbitraryProvider works (fails if not found)
33-
assertThat(lazy, is(notNullValue()));
34-
}
35-
3631
@Property
3732
void generateWithValueContraints(@ForAll final Lazy<@IntRange(min = 3, max = 42) Integer> lazy) {
3833
final Integer value = lazy.get();
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
package de.befrish.jqwik.vavr.base;
2+
3+
import io.vavr.Tuple2;
4+
import io.vavr.collection.Traversable;
5+
import net.jqwik.api.Arbitraries;
6+
import net.jqwik.api.Arbitrary;
7+
import net.jqwik.api.EdgeCasesMode;
8+
import net.jqwik.api.ForAll;
9+
import net.jqwik.api.From;
10+
import net.jqwik.api.GenerationMode;
11+
import net.jqwik.api.Property;
12+
import net.jqwik.api.Provide;
13+
import net.jqwik.api.ShrinkingMode;
14+
import net.jqwik.api.arbitraries.SizableArbitrary;
15+
import net.jqwik.api.constraints.NotEmpty;
16+
import net.jqwik.api.constraints.Size;
17+
18+
import static org.hamcrest.MatcherAssert.assertThat;
19+
import static org.hamcrest.Matchers.emptyIterable;
20+
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
21+
import static org.hamcrest.Matchers.is;
22+
import static org.hamcrest.Matchers.lessThanOrEqualTo;
23+
import static org.hamcrest.Matchers.not;
24+
import static org.hamcrest.Matchers.notNullValue;
25+
26+
public abstract class VavrArbitraryTestBase<UI> {
27+
28+
/*
29+
* use ArbitraryProvider
30+
*/
31+
32+
@Property
33+
void generate(@ForAll final UI u) {
34+
// Test that the ArbitraryProvider works (fails if not found)
35+
assertThat(u, is(notNullValue()));
36+
}
37+
38+
/*
39+
* Attribute values of shrinking, generation and edgeCases
40+
*/
41+
42+
@Property(shrinking = ShrinkingMode.OFF)
43+
void generateShrinkingOff(@ForAll final UI u) {
44+
assertThat(u, is(notNullValue()));
45+
}
46+
47+
@Property(shrinking = ShrinkingMode.FULL)
48+
void generateShrinkingFull(@ForAll final UI u) {
49+
assertThat(u, is(notNullValue()));
50+
}
51+
52+
@Property(shrinking = ShrinkingMode.BOUNDED)
53+
void generateShrinkingBounded(@ForAll final UI u) {
54+
assertThat(u, is(notNullValue()));
55+
}
56+
57+
@Property(generation = GenerationMode.AUTO)
58+
void generateGenerationAuto(@ForAll final UI u) {
59+
assertThat(u, is(notNullValue()));
60+
}
61+
62+
@Property(generation = GenerationMode.RANDOMIZED)
63+
void generateGenerationRandomized(@ForAll final UI u) {
64+
assertThat(u, is(notNullValue()));
65+
}
66+
67+
@Property(edgeCases = EdgeCasesMode.NONE)
68+
void generateEdgeCasesNone(@ForAll final UI u) {
69+
assertThat(u, is(notNullValue()));
70+
}
71+
72+
@Property(edgeCases = EdgeCasesMode.FIRST)
73+
void generateEdgeCasesFirst(@ForAll final UI u) {
74+
assertThat(u, is(notNullValue()));
75+
}
76+
77+
@Property(edgeCases = EdgeCasesMode.MIXIN)
78+
void generateEdgeCasesMixin(@ForAll final UI u) {
79+
assertThat(u, is(notNullValue()));
80+
}
81+
82+
}

src/test/java/de/befrish/jqwik/vavr/base/VavrMapArbitraryTestBase.java

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828

2929
public abstract class VavrMapArbitraryTestBase<
3030
UI extends Traversable<Tuple2<Integer, String>>,
31-
UB extends Traversable<Tuple2<Boolean, Boolean>>> {
31+
UB extends Traversable<Tuple2<Boolean, Boolean>>> extends VavrArbitraryTestBase<UI> {
3232

3333
/**
3434
* Should use {@code VavrArbitraries} factory method.
@@ -53,65 +53,15 @@ void generateFrom(@ForAll @From("integersAndStringsMinSize3") final UI u) {
5353
assertThat(u.size(), is(greaterThanOrEqualTo(3)));
5454
}
5555

56-
/*
57-
* use ArbitraryProvider
58-
*/
59-
60-
@Property
61-
void generate(@ForAll final UI u) {
62-
// Test that the ArbitraryProvider works (fails if not found)
63-
assertThat(u, is(notNullValue()));
64-
}
65-
6656
/*
6757
* Attribute values of shrinking, generation and edgeCases
6858
*/
6959

70-
@Property(shrinking = ShrinkingMode.OFF)
71-
void generateShrinkingOff(@ForAll final UI u) {
72-
assertThat(u, is(notNullValue()));
73-
}
74-
75-
@Property(shrinking = ShrinkingMode.FULL)
76-
void generateShrinkingFull(@ForAll final UI u) {
77-
assertThat(u, is(notNullValue()));
78-
}
79-
80-
@Property(shrinking = ShrinkingMode.BOUNDED)
81-
void generateShrinkingBounded(@ForAll final UI u) {
82-
assertThat(u, is(notNullValue()));
83-
}
84-
85-
@Property(generation = GenerationMode.AUTO)
86-
void generateGenerationAuto(@ForAll final UI u) {
87-
assertThat(u, is(notNullValue()));
88-
}
89-
90-
@Property(generation = GenerationMode.RANDOMIZED)
91-
void generateGenerationRandomized(@ForAll final UI u) {
92-
assertThat(u, is(notNullValue()));
93-
}
94-
9560
@Property(generation = GenerationMode.EXHAUSTIVE)
9661
void generateGenerationExhaustive(@ForAll @Size(max = 5) final UB u) {
9762
assertThat(u.size(), is(lessThanOrEqualTo(5)));
9863
}
9964

100-
@Property(edgeCases = EdgeCasesMode.NONE)
101-
void generateEdgeCasesNone(@ForAll final UI u) {
102-
assertThat(u, is(notNullValue()));
103-
}
104-
105-
@Property(edgeCases = EdgeCasesMode.FIRST)
106-
void generateEdgeCasesFirst(@ForAll final UI u) {
107-
assertThat(u, is(notNullValue()));
108-
}
109-
110-
@Property(edgeCases = EdgeCasesMode.MIXIN)
111-
void generateEdgeCasesMixin(@ForAll final UI u) {
112-
assertThat(u, is(notNullValue()));
113-
}
114-
11565
/*
11666
* SizableArbitrary
11767
*/

src/test/java/de/befrish/jqwik/vavr/base/VavrTraversableArbitraryTestBase.java

Lines changed: 1 addition & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424

2525
public abstract class VavrTraversableArbitraryTestBase<
2626
UI extends Traversable<Integer>,
27-
UB extends Traversable<Boolean>> {
27+
UB extends Traversable<Boolean>> extends VavrArbitraryTestBase<UI> {
2828

2929
/**
3030
* Should use {@code VavrArbitraries} factory method.
@@ -48,65 +48,15 @@ void generateFrom(@ForAll @From("integersMinSize3") final UI u) {
4848
assertThat(u.size(), is(greaterThanOrEqualTo(3)));
4949
}
5050

51-
/*
52-
* use ArbitraryProvider
53-
*/
54-
55-
@Property
56-
void generate(@ForAll final UI u) {
57-
// Test that the ArbitraryProvider works (fails if not found)
58-
assertThat(u, is(notNullValue()));
59-
}
60-
6151
/*
6252
* Attribute values of shrinking, generation and edgeCases
6353
*/
6454

65-
@Property(shrinking = ShrinkingMode.OFF)
66-
void generateShrinkingOff(@ForAll final UI u) {
67-
assertThat(u, is(notNullValue()));
68-
}
69-
70-
@Property(shrinking = ShrinkingMode.FULL)
71-
void generateShrinkingFull(@ForAll final UI u) {
72-
assertThat(u, is(notNullValue()));
73-
}
74-
75-
@Property(shrinking = ShrinkingMode.BOUNDED)
76-
void generateShrinkingBounded(@ForAll final UI u) {
77-
assertThat(u, is(notNullValue()));
78-
}
79-
80-
@Property(generation = GenerationMode.AUTO)
81-
void generateGenerationAuto(@ForAll final UI u) {
82-
assertThat(u, is(notNullValue()));
83-
}
84-
85-
@Property(generation = GenerationMode.RANDOMIZED)
86-
void generateGenerationRandomized(@ForAll final UI u) {
87-
assertThat(u, is(notNullValue()));
88-
}
89-
9055
@Property(generation = GenerationMode.EXHAUSTIVE)
9156
void generateGenerationExhaustive(@ForAll @Size(max = 5) final UB u) {
9257
assertThat(u.size(), is(lessThanOrEqualTo(5)));
9358
}
9459

95-
@Property(edgeCases = EdgeCasesMode.NONE)
96-
void generateEdgeCasesNone(@ForAll final UI u) {
97-
assertThat(u, is(notNullValue()));
98-
}
99-
100-
@Property(edgeCases = EdgeCasesMode.FIRST)
101-
void generateEdgeCasesFirst(@ForAll final UI u) {
102-
assertThat(u, is(notNullValue()));
103-
}
104-
105-
@Property(edgeCases = EdgeCasesMode.MIXIN)
106-
void generateEdgeCasesMixin(@ForAll final UI u) {
107-
assertThat(u, is(notNullValue()));
108-
}
109-
11060
/*
11161
* StreamableArbitrary
11262
*/

src/test/java/de/befrish/jqwik/vavr/concurrent/VavrFutureArbitraryTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.befrish.jqwik.vavr.concurrent;
22

33
import de.befrish.jqwik.vavr.VavrArbitraries;
4+
import de.befrish.jqwik.vavr.base.VavrArbitraryTestBase;
45
import io.vavr.concurrent.Future;
56
import net.jqwik.api.Arbitraries;
67
import net.jqwik.api.Arbitrary;
@@ -19,7 +20,7 @@
1920
import static org.hamcrest.Matchers.lessThanOrEqualTo;
2021
import static org.hamcrest.Matchers.notNullValue;
2122

22-
class VavrFutureArbitraryTest {
23+
class VavrFutureArbitraryTest extends VavrArbitraryTestBase<Future<Integer>> {
2324

2425
@Provide
2526
Arbitrary<Future<Integer>> integersMin3OrIOException() {
Lines changed: 7 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,33 @@
11
package de.befrish.jqwik.vavr.control;
22

33
import de.befrish.jqwik.vavr.VavrArbitraries;
4+
import de.befrish.jqwik.vavr.base.VavrArbitraryTestBase;
45
import io.vavr.control.Either;
56
import io.vavr.control.Option;
67
import net.jqwik.api.Arbitraries;
78
import net.jqwik.api.Arbitrary;
89
import net.jqwik.api.ForAll;
910
import net.jqwik.api.From;
11+
import net.jqwik.api.GenerationMode;
1012
import net.jqwik.api.Property;
1113
import net.jqwik.api.Provide;
1214
import net.jqwik.api.constraints.CharRange;
1315
import net.jqwik.api.constraints.IntRange;
16+
import net.jqwik.api.constraints.Size;
17+
import net.jqwik.api.constraints.StringLength;
1418
import org.hamcrest.Description;
1519
import org.hamcrest.Matcher;
1620
import org.hamcrest.TypeSafeDiagnosingMatcher;
1721

22+
import static de.befrish.jqwik.vavr.TestMatchers.hasOnlyAs;
1823
import static org.hamcrest.MatcherAssert.assertThat;
24+
import static org.hamcrest.Matchers.equalTo;
1925
import static org.hamcrest.Matchers.greaterThanOrEqualTo;
2026
import static org.hamcrest.Matchers.is;
2127
import static org.hamcrest.Matchers.lessThanOrEqualTo;
2228
import static org.hamcrest.Matchers.notNullValue;
2329

24-
class VavrEitherArbitraryTest {
30+
class VavrEitherArbitraryTest extends VavrArbitraryTestBase<Either<String, Integer>> {
2531

2632
@Provide
2733
Arbitrary<Either<String, Integer>> integersMin3OrAString() {
@@ -39,12 +45,6 @@ void generateFrom(@ForAll @From("integersMin3OrAString") final Either<String, In
3945
}
4046
}
4147

42-
@Property
43-
void generate(@ForAll final Either<String, Integer> either) {
44-
// Test that the ArbitraryProvider works (fails if not found)
45-
assertThat(either, is(notNullValue()));
46-
}
47-
4848
@Property
4949
void generateWithValueContraints(@ForAll final Either<@CharRange(from = 'a', to = 'a') String, @IntRange(min = 3, max = 42) Integer> either) {
5050
if (either.isLeft()) {
@@ -55,19 +55,4 @@ void generateWithValueContraints(@ForAll final Either<@CharRange(from = 'a', to
5555
}
5656
}
5757

58-
private static Matcher<String> hasOnlyAs() {
59-
return new TypeSafeDiagnosingMatcher<String>() {
60-
@Override
61-
protected boolean matchesSafely(final String item, final Description mismatchDescription) {
62-
mismatchDescription.appendText("String ").appendValue(item);
63-
return item.replaceAll("a", "").isEmpty();
64-
}
65-
66-
@Override
67-
public void describeTo(final Description description) {
68-
description.appendText("String only containing char 'a'");
69-
}
70-
};
71-
}
72-
7358
}

0 commit comments

Comments
 (0)