Skip to content

Commit

Permalink
Non working intermediate state - must change computers.
Browse files Browse the repository at this point in the history
  • Loading branch information
jlink authored and bechte committed Apr 29, 2016
1 parent 253a69d commit f54e2b0
Show file tree
Hide file tree
Showing 5 changed files with 36 additions and 38 deletions.
Expand Up @@ -173,7 +173,7 @@ public void testMethodOfInnerClassByUniqueId() {
assertTrue(uniqueIds.contains(uniqueIdForMethod(OtherTestClass.NestedTestClass.class, "test5()"))); assertTrue(uniqueIds.contains(uniqueIdForMethod(OtherTestClass.NestedTestClass.class, "test5()")));
} }


// @Test //@Test
public void testNonResolvableUniqueId() { public void testNonResolvableUniqueId() {
UniqueIdSelector selector = UniqueIdSelector.forUniqueId( UniqueIdSelector selector = UniqueIdSelector.forUniqueId(
engineId().append("poops", "machine").getUniqueString()); engineId().append("poops", "machine").getUniqueString());
Expand Down Expand Up @@ -218,7 +218,6 @@ public void testMethodResolutionByUniqueIdFromInheritedClass() {
assertEquals(2, engineDescriptor.allDescendants().size()); assertEquals(2, engineDescriptor.allDescendants().size());
List<UniqueId> uniqueIds = uniqueIds(); List<UniqueId> uniqueIds = uniqueIds();


// System.out.println(uniqueIds);
assertTrue(uniqueIds.contains(uniqueIdForClass(HerTestClass.class))); assertTrue(uniqueIds.contains(uniqueIdForClass(HerTestClass.class)));
assertTrue(uniqueIds.contains(uniqueIdForMethod(HerTestClass.class, "test1()"))); assertTrue(uniqueIds.contains(uniqueIdForMethod(HerTestClass.class, "test1()")));
} }
Expand Down
Expand Up @@ -103,12 +103,15 @@ private void resolveUniqueId(TestDescriptor parent, List<UniqueId.Segment> remai


UniqueId.Segment head = remainingSegments.remove(0); UniqueId.Segment head = remainingSegments.remove(0);
resolvers.forEach(resolver -> { resolvers.forEach(resolver -> {
if (!resolver.canResolveUniqueId(head, parent))
Optional<TestDescriptor> resolvedDescriptor = resolver.resolve(head, parent);
if (!resolvedDescriptor.isPresent())
return; return;
UniqueId uniqueId = parent.getUniqueId().append(head);
Optional<TestDescriptor> foundTestDescriptor = findTestDescriptorByUniqueId(uniqueId); Optional<TestDescriptor> foundTestDescriptor = findTestDescriptorByUniqueId(
resolvedDescriptor.get().getUniqueId());
TestDescriptor descriptor = foundTestDescriptor.orElseGet(() -> { TestDescriptor descriptor = foundTestDescriptor.orElseGet(() -> {
TestDescriptor newDescriptor = resolver.resolve(head, parent, uniqueId); TestDescriptor newDescriptor = resolvedDescriptor.get();
parent.addChild(newDescriptor); parent.addChild(newDescriptor);
return newDescriptor; return newDescriptor;
}); });
Expand Down Expand Up @@ -138,10 +141,10 @@ private void resolveChildren(TestDescriptor descriptor) {


private Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent) { private Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent) {
return resolvers.stream() // return resolvers.stream() //
.map(resolver -> tryToResolveWithResolver(element, parent, resolver)) // .map(resolver -> tryToResolveWithResolver(element, parent, resolver)) //
.filter(testDescriptors -> !testDescriptors.isEmpty()) // .filter(testDescriptors -> !testDescriptors.isEmpty()) //
.flatMap(Collection::stream) // .flatMap(Collection::stream) //
.collect(Collectors.toSet()); .collect(Collectors.toSet());
} }


private Set<TestDescriptor> tryToResolveWithResolver(AnnotatedElement element, TestDescriptor parent, private Set<TestDescriptor> tryToResolveWithResolver(AnnotatedElement element, TestDescriptor parent,
Expand Down
Expand Up @@ -11,6 +11,7 @@
package org.junit.gen5.engine.junit5.discoveryNEW; package org.junit.gen5.engine.junit5.discoveryNEW;


import java.lang.reflect.AnnotatedElement; import java.lang.reflect.AnnotatedElement;
import java.util.Optional;
import java.util.Set; import java.util.Set;


import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
Expand All @@ -23,12 +24,12 @@ public interface ElementResolver {
*/ */
Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent); Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent);


boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent); // boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent);


/** /**
* Will only be called if {@linkplain #canResolveUniqueId(UniqueId.Segment, TestDescriptor)} returns true. * Will only be called if {@linkplain #canResolveUniqueId(UniqueId.Segment, TestDescriptor)} returns true.
* *
* <p>Must return a valid {@linkplain TestDescriptor testDescriptor}. * <p>Must return a valid {@linkplain TestDescriptor testDescriptor}.
*/ */
TestDescriptor resolve(UniqueId.Segment segment, TestDescriptor parent, UniqueId uniqueId); Optional<TestDescriptor> resolve(UniqueId.Segment segment, TestDescriptor parent);
} }
Expand Up @@ -16,7 +16,6 @@
import java.util.Collections; import java.util.Collections;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.logging.Logger;


import org.junit.gen5.commons.util.ReflectionUtils; import org.junit.gen5.commons.util.ReflectionUtils;
import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
Expand All @@ -42,7 +41,17 @@ public Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor pare
} }


@Override @Override
public boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent) { public Optional<TestDescriptor> resolve(UniqueId.Segment segment, TestDescriptor parent) {

if (!canResolveUniqueId(segment, parent))
return Optional.empty();

Optional<Class<?>> optionalContainerClass = ReflectionUtils.loadClass(segment.getValue());
UniqueId uniqueId = createUniqueId(optionalContainerClass.get(), parent);
return Optional.of(resolveClass(optionalContainerClass.get(), parent, uniqueId));
}

private boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent) {
//Do not collapse //Do not collapse
if (!segment.getType().equals(SEGMENT_TYPE)) if (!segment.getType().equals(SEGMENT_TYPE))
return false; return false;
Expand All @@ -53,13 +62,6 @@ public boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor paren


return isPotentialTestContainer(optionalContainerClass.get()); return isPotentialTestContainer(optionalContainerClass.get());
} }

@Override
public TestDescriptor resolve(UniqueId.Segment segment, TestDescriptor parent, UniqueId uniqueId) {
Optional<Class<?>> optionalContainerClass = ReflectionUtils.loadClass(segment.getValue());
return resolveClass(optionalContainerClass.get(), parent, uniqueId);
}

private boolean isPotentialTestContainer(Class<?> element) { private boolean isPotentialTestContainer(Class<?> element) {
return new IsPotentialTestContainer().test(element); return new IsPotentialTestContainer().test(element);
} }
Expand Down
Expand Up @@ -17,7 +17,6 @@
import java.util.Collections; import java.util.Collections;
import java.util.Optional; import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.logging.Logger;


import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
import org.junit.gen5.engine.UniqueId; import org.junit.gen5.engine.UniqueId;
Expand All @@ -30,15 +29,6 @@ public class TestMethodResolver implements ElementResolver {


public static final String SEGMENT_TYPE = "method"; public static final String SEGMENT_TYPE = "method";


private boolean canResolveElement(AnnotatedElement element, TestDescriptor parent) {
//Do not collapse
if (!(element instanceof Method))
return false;
if (!(parent instanceof ClassTestDescriptor))
return false;
return isTestMethod((Method) element);
}

@Override @Override
public Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent) { public Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor parent) {
if (!(element instanceof Method)) if (!(element instanceof Method))
Expand All @@ -56,7 +46,16 @@ public Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor pare
} }


@Override @Override
public boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent) { public Optional<TestDescriptor> resolve(UniqueId.Segment segment, TestDescriptor parent) {
if (!canResolveUniqueId(segment, parent))
return Optional.empty();

Optional<Method> optionalMethod = findMethod(segment, (ClassTestDescriptor) parent);
UniqueId uniqueId = createUniqueId(optionalMethod.get(), parent);
return Optional.of(resolveMethod(optionalMethod.get(), (ClassTestDescriptor) parent, uniqueId));
}

private boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor parent) {
if (!segment.getType().equals(SEGMENT_TYPE)) if (!segment.getType().equals(SEGMENT_TYPE))
return false; return false;


Expand All @@ -70,12 +69,6 @@ public boolean canResolveUniqueId(UniqueId.Segment segment, TestDescriptor paren
return isTestMethod(optionalMethod.get()); return isTestMethod(optionalMethod.get());
} }


@Override
public TestDescriptor resolve(UniqueId.Segment segment, TestDescriptor parent, UniqueId uniqueId) {
Optional<Method> optionalMethod = findMethod(segment, (ClassTestDescriptor) parent);
return resolveMethod(optionalMethod.get(), (ClassTestDescriptor) parent, uniqueId);
}

private boolean isTestMethod(Method candidate) { private boolean isTestMethod(Method candidate) {
return new IsTestMethod().test(candidate); return new IsTestMethod().test(candidate);
} }
Expand Down

0 comments on commit f54e2b0

Please sign in to comment.