package org.junit.runner.manipulation;

import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import org.junit.runner.Description;

Orders tests.
Since:4.13
/** * Orders tests. * * @since 4.13 */
public final class Orderer { private final Ordering ordering; Orderer(Ordering delegate) { this.ordering = delegate; }
Orders the descriptions.
Returns:descriptions in order
/** * Orders the descriptions. * * @return descriptions in order */
public List<Description> order(Collection<Description> descriptions) throws InvalidOrderingException { List<Description> inOrder = ordering.orderItems( Collections.unmodifiableCollection(descriptions)); if (!ordering.validateOrderingIsCorrect()) { return inOrder; } Set<Description> uniqueDescriptions = new HashSet<Description>(descriptions); if (!uniqueDescriptions.containsAll(inOrder)) { throw new InvalidOrderingException("Ordering added items"); } Set<Description> resultAsSet = new HashSet<Description>(inOrder); if (resultAsSet.size() != inOrder.size()) { throw new InvalidOrderingException("Ordering duplicated items"); } else if (!resultAsSet.containsAll(uniqueDescriptions)) { throw new InvalidOrderingException("Ordering removed items"); } return inOrder; }
Order the tests in target.
Throws:
  • InvalidOrderingException – if ordering does something invalid (like remove or add children)
/** * Order the tests in <code>target</code>. * * @throws InvalidOrderingException if ordering does something invalid (like remove or add * children) */
public void apply(Object target) throws InvalidOrderingException { if (target instanceof Orderable) { Orderable orderable = (Orderable) target; orderable.order(this); } } }