Skip to content

Commit

Permalink
Split responsibilities in ElementResolver
Browse files Browse the repository at this point in the history
  • Loading branch information
jlink authored and bechte committed Apr 29, 2016
1 parent b0e019a commit ed186da
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 25 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -85,11 +85,10 @@ private Set<TestDescriptor> resolve(AnnotatedElement element, TestDescriptor par


private Optional<TestDescriptor> tryToResolveWithResolver(AnnotatedElement element, TestDescriptor parent, private Optional<TestDescriptor> tryToResolveWithResolver(AnnotatedElement element, TestDescriptor parent,
ElementResolver resolver) { ElementResolver resolver) {
Optional<UniqueId> optionalUniqueId = resolver.willResolve(element, parent); if (!resolver.willResolve(element, parent))
if (!optionalUniqueId.isPresent())
return Optional.empty(); return Optional.empty();


UniqueId uniqueId = optionalUniqueId.get(); UniqueId uniqueId = resolver.createUniqueId(element, parent);


Optional<TestDescriptor> optionalMethodTestDescriptor = findTestDescriptorByUniqueId(uniqueId); Optional<TestDescriptor> optionalMethodTestDescriptor = findTestDescriptorByUniqueId(uniqueId);
if (optionalMethodTestDescriptor.isPresent()) if (optionalMethodTestDescriptor.isPresent())
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -11,14 +11,15 @@
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 org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
import org.junit.gen5.engine.UniqueId; import org.junit.gen5.engine.UniqueId;


public interface ElementResolver { public interface ElementResolver {


Optional<UniqueId> willResolve(AnnotatedElement element, TestDescriptor parent); boolean willResolve(AnnotatedElement element, TestDescriptor parent);

UniqueId createUniqueId(AnnotatedElement element, TestDescriptor parent);


TestDescriptor resolve(AnnotatedElement element, TestDescriptor parent, UniqueId parentId); TestDescriptor resolve(AnnotatedElement element, TestDescriptor parent, UniqueId parentId);
} }
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
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 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 @@ -21,16 +20,17 @@
public class TestContainerResolver implements ElementResolver { public class TestContainerResolver implements ElementResolver {


@Override @Override
public Optional<UniqueId> willResolve(AnnotatedElement element, TestDescriptor parent) { public boolean willResolve(AnnotatedElement element, TestDescriptor parent) {
//Do not collapse
if (!(element instanceof Class)) if (!(element instanceof Class))
return Optional.empty(); return false;
return new IsPotentialTestContainer().test((Class<?>) element);
}


@Override
public UniqueId createUniqueId(AnnotatedElement element, TestDescriptor parent) {
Class<?> testClass = (Class<?>) element; Class<?> testClass = (Class<?>) element;
if (!new IsPotentialTestContainer().test(testClass)) { return parent.getUniqueId().append("class", testClass.getName());
return Optional.empty();
}

return Optional.of(parent.getUniqueId().append("class", testClass.getName()));
} }


@Override @Override
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@


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


import org.junit.gen5.commons.JUnitException;
import org.junit.gen5.engine.TestDescriptor; import org.junit.gen5.engine.TestDescriptor;
import org.junit.gen5.engine.UniqueId; import org.junit.gen5.engine.UniqueId;
import org.junit.gen5.engine.junit5.descriptor.ClassTestDescriptor; import org.junit.gen5.engine.junit5.descriptor.ClassTestDescriptor;
Expand All @@ -24,20 +22,19 @@
public class TestMethodResolver implements ElementResolver { public class TestMethodResolver implements ElementResolver {


@Override @Override
public Optional<UniqueId> willResolve(AnnotatedElement element, TestDescriptor parent) { public boolean willResolve(AnnotatedElement element, TestDescriptor parent) {
//Do not collapse
if (!(element instanceof Method)) if (!(element instanceof Method))
return Optional.empty(); return false;

if (!(parent instanceof ClassTestDescriptor)) if (!(parent instanceof ClassTestDescriptor))
return Optional.empty(); return false;
return new IsTestMethod().test((Method) element);
}


@Override
public UniqueId createUniqueId(AnnotatedElement element, TestDescriptor parent) {
Method testMethod = (Method) element; Method testMethod = (Method) element;

return parent.getUniqueId().append("method", testMethod.getName() + "()");
if (!new IsTestMethod().test(testMethod)) {
return Optional.empty();
}

return Optional.of(parent.getUniqueId().append("method", testMethod.getName() + "()"));
} }


@Override @Override
Expand Down

0 comments on commit ed186da

Please sign in to comment.