LongMillisTimeModel implements TimeModel, ProvidesAlias { @Override public Row appendFields(Row row) { return RowUtils.append(row, field.name(), field.dataType(), true, null); }  @Override void configure(Config config); @Override void configureFieldNames(List<String> fieldNames); @Override void configureCurrentSystemTime(long currentSystemTimeMillis); @Override int compare(Row first, Row second); @Override Row setCurrentSystemTime(Row row); @Override Row setPrecedingSystemTime(Row row); @Override StructType getSchema(); @Override Row setFarFutureTime(Row row); @Override Row appendFields(Row row); @Override Row getTime(Row row); @Override Row getPrecedingTime(Row row); @Override String getAlias();  }
@Test public void testAppendFields() { StructType withoutSchema = DataTypes.createStructType( Lists.newArrayList( DataTypes.createStructField("other", DataTypes.StringType, true))); Row without = new RowWithSchema(withoutSchema, "hello"); Row with = tm.appendFields(without); assertEquals(with.schema(), withoutSchema.add(field)); }