@Test public void testResolveAppendedFail() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields declarationB = new Fields( "c", "d", 2, 3 ); Fields selectA = new Fields( -4, -3, "a", -1, 0, 1, 2, 3 ); try { Fields.resolve( selectA, declarationA, declarationB ); fail( "did not throw exception" ); } catch( Exception exception ) { } }
public void testResolveWithTypes() { Fields selector = new Fields( "ip" ); Fields fields[] = new Fields[]{new Fields( "ip" ).applyTypes( String.class ), new Fields( "offset", "line" ).applyTypes( String.class, String.class )}; Fields resolved = Fields.resolve( selector, fields ); assertTrue( resolved.hasTypes() ); }
@Test public void testResolveAppended() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( "a" ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); }
@Test public void testResolveAppended2() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( "b" ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); }
@Test public void testResolveIndexOnly3() { Fields declarationA = new Fields( 0, 1 ); Fields declarationB = new Fields( 0, 1 ); Fields selectA = new Fields( 2 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", 2, got.get( 0 ) ); }
@Test public void testResolveIndexAppended() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( 0 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); }
@Test public void testResolveIndexAppended4() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( 3 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "d", got.get( 0 ) ); }
@Test public void testResolveIndexOnly2() { Fields declarationA = new Fields( 0, 1 ); Fields declarationB = new Fields( 0, 1 ); Fields selectA = new Fields( 1 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", 1, got.get( 0 ) ); }
@Test public void testResolveIndexAppended3() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( 2 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "c", got.get( 0 ) ); }
@Test public void testResolveAppended3() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( "c" ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "c", got.get( 0 ) ); }
@Test public void testResolveAppended4() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( "d" ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "d", got.get( 0 ) ); }
@Test public void testResolveIndexOnly() { Fields declarationA = new Fields( 0, 1 ); Fields declarationB = new Fields( 0, 1 ); Fields selectA = new Fields( 0 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", 0, got.get( 0 ) ); }
@Test public void testResolveIndexOnly4() { Fields declarationA = new Fields( 0, 1 ); Fields declarationB = new Fields( 0, 1 ); Fields selectA = new Fields( 3 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", 3, got.get( 0 ) ); }
@Test public void testResolveIndexAppended2() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( 1 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 1, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); }
Fields resolveOutgoingSelector( Set<Scope> incomingScopes, Fields argumentFields, Fields declaredFields ) { Scope incomingScope = getFirst( incomingScopes ); Fields outputSelector = getOutputSelector(); if( outputSelector.isResults() ) return declaredFields; if( outputSelector.isArguments() ) return argumentFields; if( outputSelector.isGroup() ) return incomingScope.getOutGroupingFields(); if( outputSelector.isValues() ) return incomingScope.getOutGroupingValueFields(); Fields incomingFields = resolveIncomingOperationPassThroughFields( incomingScope ); // not part of resolve as we need the argumentFields if( outputSelector.isSwap() ) return Fields.asDeclaration( incomingFields.subtract( argumentFields ) ).append( declaredFields ); try { return Fields.resolve( outputSelector, Fields.asDeclaration( incomingFields ), declaredFields ); } catch( TupleException exception ) { throw new OperatorException( this, incomingFields, declaredFields, outputSelector, exception ); } }
@Test public void testResolveAppended5() { Fields declarationA = new Fields( "a", "b" ); Fields declarationB = new Fields( "c", "d" ); Fields selectA = new Fields( "a", "d" ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); assertEquals( "not equal: ", "d", got.get( 1 ) ); }
@Test public void testSelectComplex() { Fields selector = new Fields( -1, -3 ); Fields fieldsA = new Fields( "a", "b" ); Fields fieldsB = new Fields( "c", "d" ); selector = Fields.resolve( selector, fieldsA, fieldsB ); TupleEntry entryA = new TupleEntry( fieldsA, new Tuple( "a", "b" ) ); TupleEntry entryB = new TupleEntry( fieldsB, new Tuple( "c", "d" ) ); Tuple tuple = TupleEntry.select( selector, entryA, entryB ); assertEquals( "wrong size", 2, tuple.size() ); assertEquals( "not equal: tuple.get(0)", "d", tuple.getObject( 0 ) ); assertEquals( "not equal: tuple.get(1)", "b", tuple.getObject( 1 ) ); }
@Test public void testSelectComplex2() { Fields selector = new Fields( -1, -3 ); Fields fieldsA = new Fields( "a", 1 ); Fields fieldsB = new Fields( "c", 1 ); selector = Fields.resolve( selector, fieldsA, fieldsB ); TupleEntry entryA = new TupleEntry( fieldsA, new Tuple( "a", "b" ) ); TupleEntry entryB = new TupleEntry( fieldsB, new Tuple( "c", "d" ) ); Tuple tuple = TupleEntry.select( selector, entryA, entryB ); assertEquals( "wrong size", 2, tuple.size() ); assertEquals( "not equal: tuple.get(0)", "d", tuple.getObject( 0 ) ); assertEquals( "not equal: tuple.get(1)", "b", tuple.getObject( 1 ) ); }
@Test public void testResolveAppendedComplex() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields declarationB = new Fields( "c", "d", 2, 3 ); Fields selectA = new Fields( -4, -3, -2, -1, 0, 1, 2, 3 ); Fields got = Fields.resolve( selectA, declarationA, declarationB ); assertEquals( "not equal: ", 8, got.size() ); assertEquals( "not equal: ", "c", got.get( 0 ) ); assertEquals( "not equal: ", "d", got.get( 1 ) ); assertEquals( "not equal: ", -2, got.get( 2 ) ); assertEquals( "not equal: ", -1, got.get( 3 ) ); assertEquals( "not equal: ", "a", got.get( 4 ) ); assertEquals( "not equal: ", "b", got.get( 5 ) ); assertEquals( "not equal: ", 2, got.get( 6 ) ); assertEquals( "not equal: ", 3, got.get( 7 ) ); }
Fields allFields = Fields.resolve( Fields.ALL, inputFields, declaredFields ); Tuple result = createNarrow( allFields.getPos( outgoingSelector ), appended );