Skip to content

Commit 6e0fc17

Browse files
committed
Migrate from ParametersByName to InjectedTest
1 parent 0e465cd commit 6e0fc17

File tree

16 files changed

+440
-362
lines changed

16 files changed

+440
-362
lines changed

bosk-core/src/test/java/works/bosk/IdentifierTest.java

Lines changed: 47 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,63 @@
11
package works.bosk;
22

3-
import java.util.stream.Stream;
4-
import works.bosk.testing.junit.ParametersByName;
3+
import java.lang.annotation.Retention;
4+
import java.lang.annotation.Target;
5+
import java.lang.reflect.Parameter;
6+
import java.util.List;
7+
import works.bosk.junit.InjectFrom;
8+
import works.bosk.junit.InjectedTest;
9+
import works.bosk.junit.ParameterInjector;
510

11+
import static java.lang.annotation.ElementType.PARAMETER;
12+
import static java.lang.annotation.RetentionPolicy.RUNTIME;
613
import static org.junit.jupiter.api.Assertions.assertEquals;
714
import static org.junit.jupiter.api.Assertions.assertThrows;
815

16+
@InjectFrom({IdentifierTest.ValidInjector.class, IdentifierTest.InvalidInjector.class})
917
class IdentifierTest {
1018

11-
@ParametersByName
19+
@InjectedTest
1220
void validString_survivesRoundTrip(String validString) {
1321
assertEquals(validString, Identifier.from(validString).toString());
1422
}
1523

16-
@ParametersByName
17-
void invalidString_throws(String invalidString) {
24+
@InjectedTest
25+
void invalidString_throws(@Invalid String invalidString) {
1826
assertThrows(IllegalArgumentException.class, () -> Identifier.from(invalidString));
1927
}
2028

21-
@SuppressWarnings("unused")
22-
static Stream<String> validString() {
23-
return Stream.of(
29+
@Retention(RUNTIME)
30+
@Target(PARAMETER)
31+
@interface Invalid {}
32+
33+
record ValidInjector() implements ParameterInjector {
34+
@Override
35+
public boolean supportsParameter(Parameter parameter) {
36+
return parameter.getType().equals(String.class)
37+
&& !parameter.isAnnotationPresent(Invalid.class);
38+
}
39+
40+
@Override
41+
public List<Object> values() {
42+
return validStrings();
43+
}
44+
}
45+
46+
record InvalidInjector() implements ParameterInjector {
47+
@Override
48+
public boolean supportsParameter(Parameter parameter) {
49+
return parameter.getType().equals(String.class)
50+
&& parameter.isAnnotationPresent(Invalid.class);
51+
}
52+
53+
@Override
54+
public List<Object> values() {
55+
return invalidStrings();
56+
}
57+
}
58+
59+
static List<Object> validStrings() {
60+
return List.of(
2461
"test",
2562
"unicode\uD83C\uDF33",
2663
"name with spaces",
@@ -31,9 +68,8 @@ static Stream<String> validString() {
3168
);
3269
}
3370

34-
@SuppressWarnings("unused")
35-
static Stream<String> invalidString() {
36-
return Stream.of(
71+
static List<Object> invalidStrings() {
72+
return List.of(
3773
"",
3874
"-startsWithDash",
3975
"endsWithDash-",
Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package works.bosk.jackson;
22

3-
import java.util.stream.Stream;
3+
import java.lang.reflect.Parameter;
4+
import java.util.List;
5+
import works.bosk.junit.InjectFrom;
6+
import works.bosk.junit.ParameterInjector;
47
import works.bosk.testing.drivers.DriverConformanceTest;
5-
import works.bosk.testing.junit.ParametersByName;
68

79
import static works.bosk.AbstractRoundTripTest.jacksonRoundTripFactory;
810

11+
@InjectFrom(JacksonRoundTripConformanceTest.Injector.class)
912
public class JacksonRoundTripConformanceTest extends DriverConformanceTest {
10-
@ParametersByName
1113
JacksonRoundTripConformanceTest(JacksonSerializerConfiguration config) {
1214
driverFactory = jacksonRoundTripFactory(config);
1315
}
1416

15-
@SuppressWarnings("unused")
16-
static Stream<JacksonSerializerConfiguration> config() {
17-
return Stream.of(JacksonSerializerConfiguration.defaultConfiguration());
17+
record Injector() implements ParameterInjector {
18+
@Override
19+
public boolean supportsParameter(Parameter parameter) {
20+
return parameter.getType() == JacksonSerializerConfiguration.class;
21+
}
22+
23+
@Override
24+
public List<Object> values() {
25+
return List.of(JacksonSerializerConfiguration.defaultConfiguration());
26+
}
1827
}
1928
}

bosk-mongo/src/test/java/works/bosk/drivers/mongo/internal/MongoDriverConformanceTest.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayDeque;
44
import java.util.Deque;
5+
import java.util.List;
56
import java.util.concurrent.atomic.AtomicInteger;
67
import java.util.stream.Stream;
78
import org.junit.jupiter.api.AfterEach;
@@ -18,38 +19,47 @@
1819
import works.bosk.drivers.mongo.PandoFormat;
1920
import works.bosk.drivers.mongo.internal.TestParameters.EventTiming;
2021
import works.bosk.drivers.mongo.internal.TestParameters.ParameterSet;
22+
import works.bosk.junit.InjectFrom;
23+
import works.bosk.junit.ParameterInjector;
2124
import works.bosk.testing.drivers.SharedDriverConformanceTest;
22-
import works.bosk.testing.junit.ParametersByName;
2325
import works.bosk.testing.junit.Slow;
2426

2527
import static works.bosk.drivers.mongo.MongoDriverSettings.DatabaseFormat.SEQUOIA;
2628

2729
@Slow
30+
@InjectFrom(MongoDriverConformanceTest.Injector.class)
2831
class MongoDriverConformanceTest extends SharedDriverConformanceTest {
2932
private final Deque<Runnable> tearDownActions = new ArrayDeque<>();
3033
private static MongoService mongoService;
3134
private final MongoDriverSettings driverSettings;
3235
private final AtomicInteger numOpenDrivers = new AtomicInteger(0);
3336

34-
@ParametersByName
3537
public MongoDriverConformanceTest(ParameterSet parameters) {
3638
this.driverSettings = parameters.driverSettingsBuilder().build();
3739
}
3840

39-
@SuppressWarnings("unused")
40-
static Stream<ParameterSet> parameters() {
41-
return TestParameters.driverSettings(
42-
Stream.of(
43-
PandoFormat.oneBigDocument(),
44-
// PandoFormat.withGraftPoints("/catalog", "/sideTable"), // Basic
45-
// PandoFormat.withGraftPoints("/nestedSideTable"), // Documents are themselves side tables
46-
PandoFormat.withGraftPoints("/nestedSideTable/-x-"), // Graft points are side table entries
47-
// PandoFormat.withGraftPoints("/catalog/-x-/sideTable", "/sideTable/-x-/catalog", "/sideTable/-x-/sideTable/-y-/catalog"), // Nesting, parameters
48-
// PandoFormat.withGraftPoints("/sideTable/-x-/sideTable/-y-/catalog"), // Multiple parameters in the not-separated part
49-
SEQUOIA
50-
),
51-
Stream.of(EventTiming.NORMAL) // EARLY is slow; LATE is really slow
52-
);
41+
record Injector() implements ParameterInjector {
42+
@Override
43+
public boolean supportsParameter(java.lang.reflect.Parameter parameter) {
44+
return parameter.getType() == ParameterSet.class;
45+
}
46+
47+
@Override
48+
public List<Object> values() {
49+
return TestParameters.driverSettings(
50+
Stream.of(
51+
PandoFormat.oneBigDocument(),
52+
// PandoFormat.withGraftPoints("/catalog", "/sideTable"), // Basic
53+
// PandoFormat.withGraftPoints("/nestedSideTable"), // Documents are themselves side tables
54+
PandoFormat.withGraftPoints("/nestedSideTable/-x-"), // Graft points are side table entries
55+
// PandoFormat.withGraftPoints("/catalog/-x-/sideTable", "/sideTable/-x-/catalog", "/sideTable/-x-/sideTable/-y-/catalog"), // Nesting, parameters
56+
// PandoFormat.withGraftPoints("/sideTable/-x-/sideTable/-y-/catalog"), // Multiple parameters in the not-separated part
57+
SEQUOIA
58+
),
59+
Stream.of(EventTiming.NORMAL)) // EARLY is slow; LATE is really slow
60+
.map(x -> (Object)x)
61+
.toList();
62+
}
5363
}
5464

5565
@BeforeAll

bosk-mongo/src/test/java/works/bosk/drivers/mongo/internal/MongoDriverHanoiTest.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package works.bosk.drivers.mongo.internal;
22

3+
import java.util.List;
34
import java.util.Queue;
45
import java.util.concurrent.ConcurrentLinkedDeque;
56
import java.util.stream.Stream;
@@ -12,18 +13,19 @@
1213
import works.bosk.drivers.mongo.MongoDriver;
1314
import works.bosk.drivers.mongo.MongoDriverSettings;
1415
import works.bosk.drivers.mongo.PandoFormat;
16+
import works.bosk.junit.InjectFrom;
17+
import works.bosk.junit.ParameterInjector;
1518
import works.bosk.testing.drivers.HanoiTest;
16-
import works.bosk.testing.junit.ParametersByName;
1719
import works.bosk.testing.junit.Slow;
1820

1921
import static works.bosk.drivers.mongo.internal.MainDriver.COLLECTION_NAME;
2022

2123
@Slow
24+
@InjectFrom(MongoDriverHanoiTest.Injector.class)
2225
public class MongoDriverHanoiTest extends HanoiTest {
2326
private static MongoService mongoService;
2427
private final Queue<Runnable> shutdownOperations = new ConcurrentLinkedDeque<>();
2528

26-
@ParametersByName
2729
public MongoDriverHanoiTest(TestParameters.ParameterSet parameters, TestInfo testInfo) {
2830
MongoDriverSettings settings = parameters.driverSettingsBuilder().build();
2931
this.driverFactory = DriverStack.of(
@@ -57,18 +59,26 @@ void logDone(TestInfo testInfo) {
5759
AbstractMongoDriverTest.logTest("\\=== Done", testInfo);
5860
}
5961

60-
@SuppressWarnings("unused")
61-
static Stream<TestParameters.ParameterSet> parameters() {
62-
return TestParameters.driverSettings(
63-
Stream.of(
64-
PandoFormat.oneBigDocument(),
65-
PandoFormat.withGraftPoints("/puzzles"),
66-
PandoFormat.withGraftPoints("/puzzles/-puzzle-/towers"),
67-
PandoFormat.withGraftPoints("/puzzles", "/puzzles/-puzzle-/towers/-tower-/discs"),
68-
MongoDriverSettings.DatabaseFormat.SEQUOIA
69-
),
70-
Stream.of(TestParameters.EventTiming.NORMAL)
71-
);
62+
record Injector() implements ParameterInjector {
63+
@Override
64+
public boolean supportsParameter(java.lang.reflect.Parameter parameter) {
65+
return parameter.getType() == TestParameters.ParameterSet.class;
66+
}
67+
68+
@Override
69+
public List<Object> values() {
70+
return TestParameters.driverSettings(
71+
Stream.of(
72+
PandoFormat.oneBigDocument(),
73+
PandoFormat.withGraftPoints("/puzzles"),
74+
PandoFormat.withGraftPoints("/puzzles/-puzzle-/towers"),
75+
PandoFormat.withGraftPoints("/puzzles", "/puzzles/-puzzle-/towers/-tower-/discs"),
76+
MongoDriverSettings.DatabaseFormat.SEQUOIA
77+
),
78+
Stream.of(TestParameters.EventTiming.NORMAL))
79+
.map(x -> (Object)x)
80+
.toList();
81+
}
7282
}
7383

7484
}

0 commit comments

Comments
 (0)