@Override public Iterator<E> iterator() { return IteratorUtils.filteredIterator(emptyIteratorIfNull(iterable), predicate); } };
@Override public Iterator<E> createIterator() { return IteratorUtils.filteredIterator(a.iterator(), notContainedInB); } };
@Override public Iterator<E> createIterator() { return IteratorUtils.filteredIterator(a.iterator(), containedInB); } };
/** * Returns an iterator for the set of valid values. */ public Iterator<VarValueDef> getValidValues() { return IteratorUtils.filteredIterator( getValues(), VarValueDef::isValid); }
/** * Returns input tuples that bind the given variable. */ private Iterator<Tuple> getBinds( Iterator<Tuple> tuples, final VarDef var) { return IteratorUtils.filteredIterator( tuples, tuple -> tuple.getBinding( var) != null); }
/** * Returns the bindings for variables of the given type for this function. */ public Iterator<VarBinding> getVarBindings( final String type) { return IteratorUtils.filteredIterator( varBindings_.iterator(), binding -> Objects.equals( binding.getType(), type)); }
/** * Returns a set of valid {@link TestCaseDef test case definitions} that extend the given base test cases. */ private List<TestCaseDef> getBaseValidCases( FunctionInputDef inputDef, VarTupleSet validTuples, List<TestCaseDef> baseCases) { logger_.debug( "{}: Extending valid base test cases", inputDef); Iterator<TestCaseDef> validBaseCases = IteratorUtils.filteredIterator( baseCases.iterator(), testCase -> testCase.getInvalidVar() == null); List<TestCaseDef> testCases = extendBaseCases( inputDef, validTuples, validBaseCases); logger_.info( "{}: Extended {} valid base test cases", inputDef, testCases.size()); return testCases; }
/** * Returns an iterator for the set of failure values. */ public Iterator<VarValueDef> getFailureValues() { return IteratorUtils.filteredIterator( getValues(), valueDef -> !valueDef.isValid()); }
/** * Returns the members of the given set of input variables not bound by the given test case. */ private List<VarDef> getVarsRemaining( Iterator<VarDef> vars, final TestCaseDef testCase) { return IteratorUtils.toList( IteratorUtils.filteredIterator( vars, var -> testCase.getBinding( var) == null)); }
/** * Asserts use of all tuples contained in the given test case. */ public void used( final TestCaseDef testCase) { // Note: must accumulate tuples into a separate list to avoid ConcurrentModificationException when updating used/unused membership. List<Tuple> usedTuples = IteratorUtils.toList( IteratorUtils.filteredIterator( IteratorUtils.chainedIterator( unused_.iterator(), used_.iterator()), tuple -> testCase.usesTuple( tuple))); for( Tuple tuple : usedTuples) { used( tuple); } }
/** * Returns input tuples already used in a test case that bind the given variable, considering * only tuples that are (not) once-only */ public Iterator<Tuple> getUsed( VarDef var, final boolean onceOnly) { return getBinds( IteratorUtils.filteredIterator( getUsed(), tuple -> tuple.isOnce() == onceOnly), var); }
/** * Returns a set of failure {@link TestCaseDef test case definitions} that extend the given base test cases. */ private List<TestCaseDef> getBaseFailureCases( FunctionInputDef inputDef, VarTupleSet validTuples, VarTupleSet failureTuples, List<TestCaseDef> baseCases) { logger_.debug( "{}: Extending base failure test cases", inputDef); Iterator<TestCaseDef> failureBaseCases = IteratorUtils.filteredIterator( baseCases.iterator(), testCase -> testCase.getInvalidVar() != null); List<TestCaseDef> testCases = extendBaseCases( inputDef, validTuples, failureBaseCases); // Consume all failure values used. for( TestCaseDef testCase : testCases) { VarDef failureVar = testCase.getInvalidVar(); failureTuples.used( new Tuple( new VarBindingDef( failureVar, testCase.getValue( failureVar)))); } logger_.info( "{}: Extended {} base failure test cases", inputDef, testCases.size()); return testCases; }
IteratorUtils.filteredIterator( new VarDefIterator( inputDef), this::isUncombined));
IteratorUtils.filteredIterator( getPropertyProviders( unsatisfied).iterator(), binding -> testCase.isCompatible( binding));
/** * Writes the input value definitions for all variables of the given type. */ protected void writeInputs( TestCase testCase, String type) { Iterator<VarBinding> varBindings = IteratorUtils.filteredIterator ( testCase.getVarBindings( type), binding -> !binding.isValueNA()); if( varBindings.hasNext()) { xmlWriter_ .element( "DIV") .attribute( "class", "input " + type) .content( () -> { if( !IVarDef.ARG.equals( type)) { xmlWriter_.element( "H3").content( type).write(); } writeVarSets( 0, varBindings); }) .write(); } }