Skip to content

Commit

Permalink
Moved new discovery classes and tests to discovery package
Browse files Browse the repository at this point in the history
  • Loading branch information
jlink authored and bechte committed Apr 29, 2016
1 parent 1708430 commit ab0d47a
Show file tree
Hide file tree
Showing 11 changed files with 86 additions and 569 deletions.
Expand Up @@ -29,17 +29,34 @@
import org.junit.gen5.engine.discovery.MethodSelector;
import org.junit.gen5.engine.discovery.PackageSelector;
import org.junit.gen5.engine.discovery.UniqueIdSelector;
import org.junit.gen5.junit4.runner.JUnit5;
import org.junit.runner.RunWith;

@RunWith(JUnit5.class)
public class DiscoverySelectorResolverTests {

private final JUnit5EngineDescriptor engineDescriptor = new JUnit5EngineDescriptor(engineId());
private DiscoverySelectorResolver resolver = new DiscoverySelectorResolver(engineDescriptor);
private DiscoverySelectorResolver resolver = new DiscoverySelectorResolver();

@Test
public void testSingleClassResolution() {
ClassSelector selector = ClassSelector.forClass(MyTestClass.class);

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
assertTrue(uniqueIds.contains(uniqueIdForClass(MyTestClass.class)));
assertTrue(uniqueIds.contains(uniqueIdForMethod(MyTestClass.class, "test1()")));
assertTrue(uniqueIds.contains(uniqueIdForMethod(MyTestClass.class, "test2()")));
}

@Test
public void duplicateClassSelectorOnlyResolvesOnce() {
resolver.resolveSelectors(request().select( //
ClassSelector.forClass(MyTestClass.class), //
ClassSelector.forClass(MyTestClass.class) //
).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -53,7 +70,7 @@ public void testTwoClassesResolution() {
ClassSelector selector1 = ClassSelector.forClass(MyTestClass.class);
ClassSelector selector2 = ClassSelector.forClass(YourTestClass.class);

resolver.resolveSelectors(request().select(selector1, selector2).build());
resolver.resolveSelectors(request().select(selector1, selector2).build(), engineDescriptor);

assertEquals(6, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -66,10 +83,10 @@ public void testTwoClassesResolution() {
}

@Test
public void testClassResolutionOfNestedClass() {
public void testClassResolutionOfStaticNestedClass() {
ClassSelector selector = ClassSelector.forClass(OtherTestClass.NestedTestClass.class);

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -84,7 +101,7 @@ public void testMethodResolution() throws NoSuchMethodException {
MyTestClass.class.getDeclaredMethod("test1").getDeclaringClass(),
MyTestClass.class.getDeclaredMethod("test1"));

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -97,7 +114,7 @@ public void testMethodResolutionFromInheritedMethod() throws NoSuchMethodExcepti
MethodSelector selector = MethodSelector.forMethod(HerTestClass.class,
MyTestClass.class.getDeclaredMethod("test1"));

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -111,15 +128,15 @@ public void resolvingSelectorOfNonTestMethodResolvesNothing() throws NoSuchMetho
MyTestClass.class.getDeclaredMethod("notATest").getDeclaringClass(),
MyTestClass.class.getDeclaredMethod("notATest"));
EngineDiscoveryRequest request = request().select(selector).build();
resolver.resolveSelectors(request);
resolver.resolveSelectors(request, engineDescriptor);
assertTrue(engineDescriptor.allDescendants().isEmpty());
}

@Test
public void testClassResolutionByUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueIdForClass(MyTestClass.class));
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueIdForClass(MyTestClass.class).getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -129,11 +146,11 @@ public void testClassResolutionByUniqueId() {
}

@Test
public void testInnerClassResolutionByUniqueId() {
public void testStaticNestedClassResolutionByUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForClass(OtherTestClass.NestedTestClass.class));
uniqueIdForClass(OtherTestClass.NestedTestClass.class).getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -145,9 +162,9 @@ public void testInnerClassResolutionByUniqueId() {
@Test
public void testMethodOfInnerClassByUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(OtherTestClass.NestedTestClass.class, "test5()"));
uniqueIdForMethod(OtherTestClass.NestedTestClass.class, "test5()").getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -156,11 +173,12 @@ public void testMethodOfInnerClassByUniqueId() {
}

@Test
public void testNonResolvableUniqueIdResolvesNothing() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(engineId().append("poops", "machine"));
public void resolvingUniqueIdWithUnknownSegmentTypeResolvesNothing() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
engineId().append("poops", "machine").getUniqueString());
EngineDiscoveryRequest request = request().select(selector).build();

resolver.resolveSelectors(request);
resolver.resolveSelectors(request, engineDescriptor);
assertTrue(engineDescriptor.allDescendants().isEmpty());
}

Expand All @@ -169,15 +187,16 @@ public void resolvingUniqueIdOfNonTestMethodResolvesNothing() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueIdForMethod(MyTestClass.class, "notATest()"));
EngineDiscoveryRequest request = request().select(selector).build();

resolver.resolveSelectors(request);
resolver.resolveSelectors(request, engineDescriptor);
assertTrue(engineDescriptor.allDescendants().isEmpty());
}

@Test
public void testMethodResolutionByUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueIdForMethod(MyTestClass.class, "test1()"));
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(MyTestClass.class, "test1()").getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -187,9 +206,10 @@ public void testMethodResolutionByUniqueId() {

@Test
public void testMethodResolutionByUniqueIdFromInheritedClass() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(uniqueIdForMethod(HerTestClass.class, "test1()"));
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(HerTestClass.class, "test1()").getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -201,9 +221,9 @@ public void testMethodResolutionByUniqueIdFromInheritedClass() {
@Test
public void testMethodResolutionByUniqueIdWithParams() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(HerTestClass.class, "test7(java.lang.String)"));
uniqueIdForMethod(HerTestClass.class, "test7(java.lang.String)").getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -212,22 +232,24 @@ public void testMethodResolutionByUniqueIdWithParams() {
}

@Test
public void testMethodResolutionByUniqueIdWithWrongParamsResolvesNothing() {
public void resolvingUniqueIdWithWrongParamsResolvesNothing() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(HerTestClass.class, "test7(java.math.BigDecimal)"));
uniqueIdForMethod(HerTestClass.class, "test7(java.math.BigDecimal)").getUniqueString());
EngineDiscoveryRequest request = request().select(selector).build();

resolver.resolveSelectors(request);
resolver.resolveSelectors(request, engineDescriptor);
assertTrue(engineDescriptor.allDescendants().isEmpty());
}

@Test
public void testTwoMethodResolutionsByUniqueId() {
UniqueIdSelector selector1 = UniqueIdSelector.forUniqueId(uniqueIdForMethod(MyTestClass.class, "test1()"));
UniqueIdSelector selector2 = UniqueIdSelector.forUniqueId(uniqueIdForMethod(MyTestClass.class, "test2()"));
UniqueIdSelector selector1 = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(MyTestClass.class, "test1()").getUniqueString());
UniqueIdSelector selector2 = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(MyTestClass.class, "test2()").getUniqueString());

// adding same selector twice should have no effect
resolver.resolveSelectors(request().select(selector1, selector2, selector2).build());
resolver.resolveSelectors(request().select(selector1, selector2, selector2).build(), engineDescriptor);

assertEquals(3, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -248,7 +270,7 @@ public void testTwoMethodResolutionsByUniqueId() {
public void testPackageResolution() {
PackageSelector selector = PackageSelector.forPackageName("org.junit.gen5.engine.junit5.descriptor.subpackage");

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(6, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
Expand All @@ -272,7 +294,7 @@ public void testClasspathResolution() {

List<DiscoverySelector> selector = ClasspathSelector.forPath(classpath.getAbsolutePath());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertTrue(engineDescriptor.allDescendants().size() > 500, "Too few test descriptors in classpath");

Expand All @@ -294,7 +316,7 @@ public void testClasspathResolution() {
public void testNestedTestResolutionFromBaseClass() {
ClassSelector selector = ClassSelector.forClass(TestCaseWithNesting.class);

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

List<UniqueId> uniqueIds = uniqueIds();
assertEquals(6, uniqueIds.size());
Expand All @@ -312,7 +334,7 @@ public void testNestedTestResolutionFromBaseClass() {
public void testNestedTestResolutionFromNestedTestClass() {
ClassSelector selector = ClassSelector.forClass(TestCaseWithNesting.NestedTest.class);

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

List<UniqueId> uniqueIds = uniqueIds();
assertEquals(5, uniqueIds.size());
Expand All @@ -328,9 +350,9 @@ public void testNestedTestResolutionFromNestedTestClass() {
@Test
public void testNestedTestResolutionFromUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForClass(TestCaseWithNesting.NestedTest.DoubleNestedTest.class));
uniqueIdForClass(TestCaseWithNesting.NestedTest.DoubleNestedTest.class).getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

List<UniqueId> uniqueIds = uniqueIds();
assertEquals(4, uniqueIds.size());
Expand All @@ -343,10 +365,10 @@ public void testNestedTestResolutionFromUniqueId() {
}

@Test
public void testNestedTestResolutionFromClass() {
public void testDoubleNestedTestResolutionFromClass() {
ClassSelector selector = ClassSelector.forClass(TestCaseWithNesting.NestedTest.DoubleNestedTest.class);

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

List<UniqueId> uniqueIds = uniqueIds();
assertEquals(4, uniqueIds.size());
Expand All @@ -358,12 +380,28 @@ public void testNestedTestResolutionFromClass() {
uniqueIds.contains(uniqueIdForMethod(TestCaseWithNesting.NestedTest.DoubleNestedTest.class, "testC()")));
}

@Test
public void testMethodResolutionInDoubleNestedTestClass() throws NoSuchMethodException {
MethodSelector selector = MethodSelector.forMethod(TestCaseWithNesting.NestedTest.DoubleNestedTest.class,
TestCaseWithNesting.NestedTest.DoubleNestedTest.class.getDeclaredMethod("testC"));

resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

assertEquals(4, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds();
assertTrue(uniqueIds.contains(uniqueIdForClass(TestCaseWithNesting.class)));
assertTrue(uniqueIds.contains(uniqueIdForClass(TestCaseWithNesting.NestedTest.class)));
assertTrue(uniqueIds.contains(uniqueIdForClass(TestCaseWithNesting.NestedTest.DoubleNestedTest.class)));
assertTrue(
uniqueIds.contains(uniqueIdForMethod(TestCaseWithNesting.NestedTest.DoubleNestedTest.class, "testC()")));
}

@Test
public void testNestedTestResolutionFromUniqueIdToMethod() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
uniqueIdForMethod(TestCaseWithNesting.NestedTest.class, "testB()"));
uniqueIdForMethod(TestCaseWithNesting.NestedTest.class, "testB()").getUniqueString());

resolver.resolveSelectors(request().select(selector).build());
resolver.resolveSelectors(request().select(selector).build(), engineDescriptor);

List<UniqueId> uniqueIds = uniqueIds();
assertEquals(3, uniqueIds.size());
Expand Down
Expand Up @@ -13,9 +13,6 @@
import org.junit.gen5.commons.util.ReflectionUtils;
import org.junit.gen5.engine.UniqueId;
import org.junit.gen5.engine.junit5.JUnit5TestEngine;
import org.junit.gen5.engine.junit5.discoveryNEW.NestedTestsResolver;
import org.junit.gen5.engine.junit5.discoveryNEW.TestContainerResolver;
import org.junit.gen5.engine.junit5.discoveryNEW.TestMethodResolver;

/**
* Test data builder for unique IDs for JUnit5TestEngine.
Expand Down

0 comments on commit ab0d47a

Please sign in to comment.