### Question:
FastAppend extends SnapshotProducer<AppendFiles> implements AppendFiles { @Override public FastAppend appendFile(DataFile file) { this.hasNewFiles = true; newFiles.add(file); summaryBuilder.addedFile(spec, file); return this; } FastAppend(String tableName, TableOperations ops); @Override AppendFiles set(String property, String value); @Override FastAppend appendFile(DataFile file); @Override FastAppend appendManifest(ManifestFile manifest); @Override List<ManifestFile> apply(TableMetadata base); @Override Object updateEvent();  }### Answer:
@Test public void testEmptyTableAppend() { Assert.assertEquals("Table should start empty", 0, listManifestFiles().size()); TableMetadata base = readMetadata(); Assert.assertNull("Should not have a current snapshot", base.currentSnapshot()); Assert.assertEquals("Table should start with last-sequence-number 0", 0, base.lastSequenceNumber()); table.newFastAppend() .appendFile(FILE_A) .appendFile(FILE_B) .commit(); Snapshot snap = table.currentSnapshot(); validateSnapshot(base.currentSnapshot(), snap, 1, FILE_A, FILE_B); V2Assert.assertEquals("Snapshot sequence number should be 1", 1, snap.sequenceNumber()); V2Assert.assertEquals("Last sequence number should be 1", 1, readMetadata().lastSequenceNumber()); V1Assert.assertEquals("Table should end with last-sequence-number 0", 0, base.lastSequenceNumber()); }