Skip to content

Commit

Permalink
Provide better names for the test plan specification
Browse files Browse the repository at this point in the history
- Reduced dependencies to the Builder DSL

Issue: #116
  • Loading branch information
bechte committed Jan 18, 2016
1 parent b69786d commit 1597a2a
Show file tree
Hide file tree
Showing 13 changed files with 241 additions and 250 deletions.
Expand Up @@ -11,7 +11,6 @@
package org.junit.gen5.console.tasks;

import static java.util.stream.Collectors.toSet;
import static org.junit.gen5.engine.discoveryrequest.dsl.ClassFilters.classNameMatches;
import static org.junit.gen5.engine.discoveryrequest.dsl.ClasspathSelectorBuilder.byPaths;
import static org.junit.gen5.engine.discoveryrequest.dsl.DiscoveryRequestBuilder.request;
import static org.junit.gen5.engine.discoveryrequest.dsl.NameBasedSelectorBuilder.byNames;
Expand All @@ -23,6 +22,7 @@
import org.junit.gen5.commons.util.ReflectionUtils;
import org.junit.gen5.console.options.CommandLineOptions;
import org.junit.gen5.engine.DiscoveryRequest;
import org.junit.gen5.engine.discoveryrequest.dsl.ClassFilterBuilder;
import org.junit.gen5.engine.discoveryrequest.dsl.TagFilterBuilder;

class DiscoveryRequestCreator {
Expand Down Expand Up @@ -57,7 +57,7 @@ private DiscoveryRequest buildNameBasedDiscoveryRequest(CommandLineOptions optio
}

private void applyFilters(DiscoveryRequest discoveryRequest, CommandLineOptions options) {
options.getClassnameFilter().ifPresent(regex -> discoveryRequest.addFilter(classNameMatches(regex)));
options.getClassnameFilter().ifPresent(regex -> discoveryRequest.addFilter(ClassFilterBuilder.pattern(regex)));
if (!options.getTagsFilter().isEmpty()) {
discoveryRequest.addPostFilter(TagFilterBuilder.includeTags(options.getTagsFilter()));
}
Expand Down

This file was deleted.

This file was deleted.

Expand Up @@ -10,9 +10,15 @@

package org.junit.gen5.engine.discoveryrequest.dsl;

import org.junit.gen5.engine.ClassFilter;
import org.junit.gen5.engine.FilterResult;
import org.junit.gen5.engine.discoveryrequest.ClassNameFilter;

public class ClassFilterBuilder {
public static ClassFilter anyClass() {
return testClass -> FilterResult.included("Any class");
}

public static ClassNameFilter pattern(String pattern) {
return new ClassNameFilter(pattern);
}
Expand Down

This file was deleted.

@@ -0,0 +1,83 @@
/*
* Copyright 2015-2016 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.junit.gen5.engine.discoveryrequest.dsl;

import static java.lang.String.format;
import static java.util.Arrays.asList;
import static java.util.stream.Collectors.joining;

import java.util.Collection;
import java.util.StringJoiner;
import java.util.stream.Collectors;

import org.junit.gen5.engine.DiscoveryFilter;
import org.junit.gen5.engine.DiscoveryRequest;
import org.junit.gen5.engine.FilterResult;

/**
* A collection of common builders for {@link DiscoveryRequest} elements.
*
* @since 5.0
*/
public class CommonBuilder {
public static <T> DiscoveryFilter<T> alwaysIncluded() {
return (any) -> FilterResult.included("Always included");
}

public static <T> DiscoveryFilter<T> alwaysExcluded() {
return (any) -> FilterResult.excluded("Always excluded");
}

public static <T> DiscoveryFilter<T> allOf(DiscoveryFilter<T>... filters) {
if (filters == null) {
return alwaysIncluded();
}
else {
return allOf(asList(filters));
}
}

public static <T> DiscoveryFilter<T> allOf(Collection<DiscoveryFilter<T>> filters) {
if (filters == null || filters.isEmpty()) {
return alwaysIncluded();
}
else if (filters.size() == 1) {
return filters.iterator().next();
}
else {
return new AndAllDiscoveryFilter(filters);
}
}

private static class AndAllDiscoveryFilter<T> implements DiscoveryFilter<T> {
private final Collection<DiscoveryFilter<T>> filters;

public AndAllDiscoveryFilter(Collection<DiscoveryFilter<T>> filters) {
this.filters = filters;
}

@Override
public FilterResult filter(T element) {
// @formatter:off
return this.filters.stream()
.map(filter -> filter.filter(element))
.filter(FilterResult::excluded)
.findFirst()
.orElse(FilterResult.included("Element was included by all filters."));
// @formatter:on
}

@Override
public String toString() {
return this.filters.stream().map(Object::toString).map(s -> format("(%s)", s)).collect(joining(" and "));
}
}
}
@@ -0,0 +1,39 @@
/*
* Copyright 2015-2016 the original author or authors.
*
* All rights reserved. This program and the accompanying materials are
* made available under the terms of the Eclipse Public License v1.0 which
* accompanies this distribution and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/

package org.junit.gen5.engine;

import static org.junit.gen5.api.Assertions.*;

import java.util.Collection;

import org.junit.gen5.api.Test;
import org.junit.gen5.engine.discoveryrequest.dsl.ClassFilterBuilder;

class ClassFilterBuilderTests {
@Test
void classNameMatches() {
String regex = "^java\\.lang\\..*";

ClassFilter filter = ClassFilterBuilder.pattern(regex);

assertEquals("Filter class names with regular expression: " + regex, filter.toString());
assertTrue(filter.filter(String.class).included());
assertFalse(filter.filter(Collection.class).included());
}

@Test
void anyClass() {
ClassFilter filter = ClassFilterBuilder.anyClass();

assertTrue(filter.filter(String.class).included());
assertTrue(filter.filter(this.getClass()).included());
}
}

This file was deleted.

0 comments on commit 1597a2a

Please sign in to comment.