SawMetadataTest.java

package tech.tablesaw.io.saw;

import static org.junit.jupiter.api.Assertions.*;
import static tech.tablesaw.io.saw.CompressionType.SNAPPY;

import java.nio.file.Paths;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import tech.tablesaw.api.Table;
import tech.tablesaw.columns.Column;

class SawMetadataTest {

  private static Table table1;
  private static SawMetadata metadata1;

  @BeforeEach
  void setUp() throws Exception {
    table1 = Table.read().csv("../data/bush.csv");
    metadata1 = new SawMetadata(table1, new SawWriteOptions());
  }

  @Test
  void toAndFromJson() {
    String json = metadata1.toJson();
    SawMetadata copy = SawMetadata.fromJson(json);
    assertEquals(metadata1, copy);
  }

  @Test
  void testReadTableMetaDataFromFile() {
    String path = new SawWriter("../testoutput/bush", table1).write();
    SawMetadata metadata = SawMetadata.readMetadata(Paths.get(path));
    assertEquals(table1.name(), metadata.getTableName());
    assertEquals(table1.rowCount(), metadata.getRowCount());
    assertEquals(table1.columnNames(), metadata.columnNames());
    assertEquals(SNAPPY, metadata.getCompressionType());

    String json = metadata.toJson();
    SawMetadata copy = SawMetadata.fromJson(json);
    assertEquals(metadata1, copy);
  }

  @Test
  void getName() {
    assertEquals(table1.name(), metadata1.getTableName());
  }

  @Test
  void getRowCount() {
    assertEquals(table1.rowCount(), metadata1.getRowCount());
  }

  @Test
  void getVersion() {
    assertEquals(3, metadata1.getVersion());
  }

  @Test
  void getColumnMetadataList() {
    for (int i = 0; i < table1.columnCount(); i++) {
      Column<?> c = table1.columns().get(i);
      ColumnMetadata cmd = metadata1.getColumnMetadataList().get(i);
      assertEquals(c.name(), cmd.getName());
    }
  }

  @Test
  void getColumnCount() {
    assertEquals(table1.columnCount(), metadata1.columnCount());
  }

  @Test
  void shape() {
    assertEquals(table1.shape(), metadata1.shape());
  }

  @Test
  void columnNames() {
    assertEquals(table1.columnNames(), metadata1.columnNames());
  }

  @Test
  void structure() {
    assertEquals(table1.structure().toString(), metadata1.structure().toString());
  }
}