/** * Returns the set of {@link Fields} selected on this result. */ Fields selectedFields() { return declaredFields.select(withFields); }
@Test public void testSelectFrom() { Fields declarationA = new Fields( "a", "b", "c", "d", "e", "f", "g" ); Fields declarationB = new Fields( "A", "B", "C", "D", "E", "F", "G" ); Fields selectA = new Fields( "b", "d", "f" ); Fields fields = declarationA.selectPos( selectA ); Fields results = declarationB.select( fields ); assertEquals( "not equal: ", 3, results.size() ); assertEquals( "not equal: ", "B", results.get( 0 ) ); assertEquals( "not equal: ", "D", results.get( 1 ) ); assertEquals( "not equal: ", "F", results.get( 2 ) ); }
public Builder<C> withFields(Fields... fields) { Fields fieldMask = Fields.merge(fields); try { this.fields.select(fieldMask); this.fieldMask = fieldMask; } catch (FieldsResolverException e) { throw new IllegalArgumentException("selected fields must be contained in record fields: selected fields=" + fieldMask + ", source fields=" + this.fields); } return this; }
/** * Defines a subset of fields so that you can modify a smaller, pertinent collection of field values with * {@link #addTuple(Object...)}. */ public DataBuilder withFields(Fields... fields) { Fields fieldMask = Fields.merge(fields); try { this.fields.select(fieldMask); this.fieldMask = fieldMask; } catch (FieldsResolverException e) { throw new IllegalArgumentException("selected fields must be contained in record fields: selected fields=" + fieldMask + ", source fields=" + this.fields); } return this; }
/** This must fail, no way the dec is a declaration */ @Test public void testSelectFail() { Fields declarationA = new Fields( 2, "a", "b", 3 ); Fields selectA = new Fields( 2, 3, "a", "b" ); try { declarationA.select( selectA ); fail( "did not catch invalid field" ); } catch( Exception exception ) { // ignore } }
@Test public void testSelectWildcard() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = Fields.ALL; Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); assertEquals( "not equal: ", "b", got.get( 1 ) ); }
@Test public void testSelect2() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = new Fields( "b", "a" ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); assertEquals( "not equal: ", "a", got.get( 1 ) ); }
@Test public void testSelectMixed2() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = new Fields( 1, 0 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); assertEquals( "not equal: ", "a", got.get( 1 ) ); }
@Test public void testSelectPos() { Fields declarationA = new Fields( 0, 1 ); Fields selectA = new Fields( 0, 1 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", 0, got.get( 0 ) ); assertEquals( "not equal: ", 1, got.get( 1 ) ); }
@Test public void testSelectMixed() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = new Fields( 0, 1 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); assertEquals( "not equal: ", "b", got.get( 1 ) ); }
@Test public void testSelectMixedNeg() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = new Fields( -2, -1 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); assertEquals( "not equal: ", "b", got.get( 1 ) ); }
@Test public void testSelectMixedNeg2() { Fields declarationA = new Fields( "a", "b" ); Fields selectA = new Fields( -1, -2 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); assertEquals( "not equal: ", "a", got.get( 1 ) ); }
/** * this test is reverted from original. we don't want to do the following comment * ~~this one is funky. regardless of the input, positions are always monotonically increasing~~ */ @Test public void testSelectPos2() { Fields declarationA = new Fields( 0, 1 ); Fields selectA = new Fields( 1, 0 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", 1, got.get( 0 ) ); assertEquals( "not equal: ", 0, got.get( 1 ) ); }
@Test public void testTypedSelect2() { Fields declarationA = new Fields( names( "a", "b" ), types( int.class, String.class ) ); Fields selectA = new Fields( "b", "a" ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", String.class, got.getType( 0 ) ); assertEquals( "not equal: ", int.class, got.getType( 1 ) ); }
@Test public void testTypedSelect() { Fields declarationA = new Fields( names( "a", "b" ), types( int.class, String.class ) ); Fields selectA = new Fields( "a", "b" ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 2, got.size() ); assertEquals( "not equal: ", int.class, got.getType( 0 ) ); assertEquals( "not equal: ", String.class, got.getType( 1 ) ); }
@Test public void testSelectMixedNeg5() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields selectA = new Fields( -4, -3, -2, -1 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 4, got.size() ); assertEquals( "not equal: ", "a", got.get( 0 ) ); assertEquals( "not equal: ", "b", got.get( 1 ) ); assertEquals( "not equal: ", 2, got.get( 2 ) ); assertEquals( "not equal: ", 3, got.get( 3 ) ); }
@Test public void testSelectMixedNeg3() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields selectA = new Fields( 1, 0, -2, -1 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 4, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); assertEquals( "not equal: ", "a", got.get( 1 ) ); assertEquals( "not equal: ", 2, got.get( 2 ) ); assertEquals( "not equal: ", 3, got.get( 3 ) ); }
@Test public void testSelectMixedNeg4() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields selectA = new Fields( -2, -1, "a", "b" ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 4, got.size() ); assertEquals( "not equal: ", 2, got.get( 0 ) ); assertEquals( "not equal: ", 3, got.get( 1 ) ); assertEquals( "not equal: ", "a", got.get( 2 ) ); assertEquals( "not equal: ", "b", got.get( 3 ) ); }
@Test public void testSelectMixed3() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields selectA = new Fields( 1, 0, 2, 3 ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 4, got.size() ); assertEquals( "not equal: ", "b", got.get( 0 ) ); assertEquals( "not equal: ", "a", got.get( 1 ) ); assertEquals( "not equal: ", 2, got.get( 2 ) ); assertEquals( "not equal: ", 3, got.get( 3 ) ); }
@Test public void testSelectMixed4() { Fields declarationA = new Fields( "a", "b", 2, 3 ); Fields selectA = new Fields( 2, 3, "a", "b" ); Fields got = declarationA.select( selectA ); assertEquals( "not equal: ", 4, got.size() ); assertEquals( "not equal: ", 2, got.get( 0 ) ); assertEquals( "not equal: ", 3, got.get( 1 ) ); assertEquals( "not equal: ", "a", got.get( 2 ) ); assertEquals( "not equal: ", "b", got.get( 3 ) ); }