FrameTuple implements Tuple, Cloneable { public FrameTuple() {} FrameTuple();  FrameTuple(Tuple left, Tuple right); void set(Tuple left, Tuple right); @Override int size(); @Override boolean contains(int fieldId); @Override boolean isNull(int fieldid); @Override boolean isNotNull(int fieldid); @Override void clear(); @Override void put(int fieldId, Datum value); @Override void put(int fieldId, Datum[] values); @Override void put(int fieldId, Tuple tuple); @Override void setOffset(long offset); @Override long getOffset(); @Override void put(Datum [] values); @Override Datum get(int fieldId); @Override boolean getBool(int fieldId); @Override byte getByte(int fieldId); @Override char getChar(int fieldId); @Override byte [] getBytes(int fieldId); @Override short getInt2(int fieldId); @Override int getInt4(int fieldId); @Override long getInt8(int fieldId); @Override float getFloat4(int fieldId); @Override double getFloat8(int fieldId); @Override String getText(int fieldId); @Override ProtobufDatum getProtobufDatum(int fieldId); @Override IntervalDatum getInterval(int fieldId); @Override char [] getUnicodeChars(int fieldId); @Override Tuple clone(); @Override Datum[] getValues(); String toString();  }
@Test public final void testFrameTuple() { Tuple frame = new FrameTuple(tuple1, tuple2); assertEquals(22, frame.size()); for (int i = 0; i < 22; i++) { assertTrue(frame.contains(i)); } assertEquals(DatumFactory.createInt8(23l), frame.get(5)); assertEquals(DatumFactory.createInt8(23l), frame.get(16)); assertEquals(DatumFactory.createInet4("192.168.0.1"), frame.get(10)); assertEquals(DatumFactory.createInet4("192.168.0.1"), frame.get(21)); }