Coverage Report - jaggregate.internal.UnaryConditions
 
Classes in this File Line Coverage Branch Coverage Complexity
UnaryConditions
100%
4/4
N/A
0
UnaryConditions$1
100%
2/2
100%
1/1
0
 
 1  
 /*
 2  
  Copyright 2004-2008 Paul R. Holser, Jr.  All rights reserved.
 3  
  Licensed under the Academic Free License version 3.0
 4  
  */
 5  
 
 6  
 package jaggregate.internal;
 7  
 
 8  
 import jaggregate.UnaryCondition;
 9  
 import static jaggregate.internal.ArgumentChecks.*;
 10  
 
 11  
 /**
 12  
  * @author <a href="mailto:pholser@alumni.rice.edu">Paul Holser</a>
 13  
  * @version $Id: UnaryConditions.java,v 1.2 2008/10/03 19:01:23 pholser Exp $
 14  
  */
 15  
 public class UnaryConditions {
 16  
     /**
 17  
      * Discourages instantiation.
 18  
      *
 19  
      * @throws UnsupportedOperationException always
 20  
      */
 21  1
     protected UnaryConditions() {
 22  1
         throw new UnsupportedOperationException();
 23  
     }
 24  
 
 25  
     /**
 26  
      * Answers a predicate that represents the logical <dfn>inverse</dfn> of the given
 27  
      * predicate; wherever the given predicate's {@link UnaryCondition#matches(Object)
 28  
      * matches} method would answer {@code true}, the inverse answers {@code false};
 29  
      * and vice versa.
 30  
      *
 31  
      * @param <T> constraint on the types accepted by the condition
 32  
      * @param condition the condition to invert
 33  
      * @return the inverse of {@code condition}
 34  
      * @throws NullPointerException if {@code condition} is {@code null}
 35  
      */
 36  
     public static <T> UnaryCondition<T> not( final UnaryCondition<T> condition ) {
 37  8
         ensureNotNull( condition, DISCRIMINATOR );
 38  
 
 39  6
         return new UnaryCondition<T>() {
 40  6
             public boolean matches( T target ) {
 41  10
                 return !condition.matches( target );
 42  
             }
 43  
         };
 44  
     }
 45  
 }