@Override
public boolean apply( Tuple tuple )
{
for( Tuple skipTuple : skip )
{
Tuple value = tuple.get( skipFields.getPos() );
if( value.equals( skipTuple ) )
{
LOG.debug( "skipping: lhs: {}", tuple );
return false;
}
}
return true;
}
} );
rhsIterator = Iterators.filter( rhsIterator, new Predicate<Tuple>()
{
@Override
public boolean apply( Tuple tuple )
{
for( Tuple skipTuple : skip )
{
Tuple value = tuple.get( skipFields.getPos() );
if( value.equals( skipTuple ) )
{
LOG.debug( "skipping: rhs: {}", tuple );
return false;
}
}
return true;
}
} );
}
while( lhsIterator.hasNext() )
{
Tuple lhsTuple = lhsIterator.next();
Tuple rhsTuple = rhsIterator.next();
assertEquals( "not same size", lhsTuple.size(), rhsTuple.size() );
try
{
for( int i = 0; i < lhsTuple.size(); i++ )
{
Object lhsObject = lhsTuple.getObject( i );
Object rhsObject = rhsTuple.getObject( i );
if( lhsObject instanceof Double )
assertEquals( (Double) lhsObject, (Double) rhsObject, delta );
else if( lhsObject instanceof Float )
assertEquals( (Float) lhsObject, (Float) rhsObject, delta );
else
assertEquals( lhsObject, rhsObject );
}
}
catch( AssertionFailedError exception )
{
LOG.error( "actual error", exception );
throw new ComparisonFailure( "tuples not equal", lhsTuple.toString(), rhsTuple.toString() );
}
}
}