// Path: core/src/com/clarkparsia/owlwg/testcase/TestCase.java
// public interface TestCase<O> {
// 
// 	public void accept(TestCaseVisitor<O> visitor);
// 
// 	public Set<Semantics> getApplicableSemantics();
// 
// 	public String getIdentifier();
// 
// 	public Set<URI> getImportedOntologies();
// 
// 	public String getImportedOntology(URI uri, SerializationFormat format);
// 
// 	public Set<SerializationFormat> getImportedOntologyFormats(URI uri);
// 
// 	public Set<Semantics> getNotApplicableSemantics();
// 
// 	public Set<SyntaxConstraint> getSatisfiedConstraints();
// 
// 	public Status getStatus();
// 
// 	public Set<SyntaxConstraint> getUnsatisfiedConstraints();
// 
// 	public URI getURI();
// }


import java.util.Arrays;
import java.util.Collection;
import com.clarkparsia.owlwg.testcase.TestCase;
package com.clarkparsia.owlwg.testcase.filter;



/**
 * <p>
 * Title: Disjunction Filter Condition
 * </p>
 * <p>
 * Description: Filter condition that acts as a disjunction of other filter
 * conditions
 * </p>
 * <p>
 * Copyright: Copyright &copy; 2009
 * </p>
 * <p>
 * Company: Clark & Parsia, LLC. <a
 * href="http://clarkparsia.com/"/>http://clarkparsia.com/</a>
 * </p>
 * 
 * @author Mike Smith &lt;msmith@clarkparsia.com&gt;
 */
public class DisjunctionFilter implements FilterCondition {

	public static DisjunctionFilter or(Collection<? extends FilterCondition> conditions) {
		return new DisjunctionFilter( conditions );
	}

	public static DisjunctionFilter or(FilterCondition... conditions) {
		return or( Arrays.asList( conditions ) );
	}

	final private FilterCondition[]	conditions;

	public DisjunctionFilter(Collection<? extends FilterCondition> conditions) {
		if( conditions == null )
			throw new NullPointerException();

		this.conditions = conditions.toArray( new FilterCondition[0] );
	}

	public DisjunctionFilter(FilterCondition... conditions) {
		final int n = conditions.length;

		this.conditions = new FilterCondition[n];
		System.arraycopy( conditions, 0, this.conditions, 0, n );
	}

// Path: core/src/com/clarkparsia/owlwg/testcase/TestCase.java
// public interface TestCase<O> {
// 
// 	public void accept(TestCaseVisitor<O> visitor);
// 
// 	public Set<Semantics> getApplicableSemantics();
// 
// 	public String getIdentifier();
// 
// 	public Set<URI> getImportedOntologies();
// 
// 	public String getImportedOntology(URI uri, SerializationFormat format);
// 
// 	public Set<SerializationFormat> getImportedOntologyFormats(URI uri);
// 
// 	public Set<Semantics> getNotApplicableSemantics();
// 
// 	public Set<SyntaxConstraint> getSatisfiedConstraints();
// 
// 	public Status getStatus();
// 
// 	public Set<SyntaxConstraint> getUnsatisfiedConstraints();
// 
// 	public URI getURI();
// }


// Path: core/src/com/clarkparsia/owlwg/testcase/filter/DisjunctionFilter.java
import java.util.Arrays;
import java.util.Collection;
import com.clarkparsia.owlwg.testcase.TestCase;

package com.clarkparsia.owlwg.testcase.filter;



/**
 * <p>
 * Title: Disjunction Filter Condition
 * </p>
 * <p>
 * Description: Filter condition that acts as a disjunction of other filter
 * conditions
 * </p>
 * <p>
 * Copyright: Copyright &copy; 2009
 * </p>
 * <p>
 * Company: Clark & Parsia, LLC. <a
 * href="http://clarkparsia.com/"/>http://clarkparsia.com/</a>
 * </p>
 * 
 * @author Mike Smith &lt;msmith@clarkparsia.com&gt;
 */
public class DisjunctionFilter implements FilterCondition {

	public static DisjunctionFilter or(Collection<? extends FilterCondition> conditions) {
		return new DisjunctionFilter( conditions );
	}

	public static DisjunctionFilter or(FilterCondition... conditions) {
		return or( Arrays.asList( conditions ) );
	}

	final private FilterCondition[]	conditions;

	public DisjunctionFilter(Collection<? extends FilterCondition> conditions) {
		if( conditions == null )
			throw new NullPointerException();

		this.conditions = conditions.toArray( new FilterCondition[0] );
	}

	public DisjunctionFilter(FilterCondition... conditions) {
		final int n = conditions.length;

		this.conditions = new FilterCondition[n];
		System.arraycopy( conditions, 0, this.conditions, 0, n );
	}

	public boolean accepts(TestCase testcase) {