InstantColumnTest.java
package tech.tablesaw.api;
import static org.junit.jupiter.api.Assertions.*;
import java.time.Instant;
import java.util.Arrays;
import java.util.List;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import tech.tablesaw.columns.AbstractColumnParser;
class InstantColumnTest {
private final InstantColumn instanceColumn = InstantColumn.create("Test");
private Instant now = Instant.now();
private long baseline = now.getEpochSecond();
private long before = baseline - 100L;
private long after = baseline + 100L;
private Instant baselineInst = Instant.ofEpochSecond(baseline);
private Instant beforeInst = Instant.ofEpochSecond(before);
private Instant afterInst = Instant.ofEpochSecond(after);
@BeforeEach
void setUp() {
instanceColumn.append(beforeInst);
instanceColumn.append(baselineInst);
instanceColumn.append(afterInst);
instanceColumn.appendMissing();
}
@Test
void isAfter() {
assertEquals(2, instanceColumn.isAfter(baselineInst).get(0));
}
@Test
void isBefore() {
assertEquals(0, instanceColumn.isBefore(baselineInst).get(0));
assertEquals(1, instanceColumn.isBefore(afterInst).get(1));
}
@Test
void isEqualTo() {
assertEquals(2, instanceColumn.isEqualTo(afterInst).get(0));
}
@Test
void isMissing() {
assertEquals(3, instanceColumn.isMissing().get(0));
}
@Test
void isNotMissing() {
assertEquals(0, instanceColumn.isNotMissing().get(0));
assertEquals(1, instanceColumn.isNotMissing().get(1));
assertEquals(2, instanceColumn.isNotMissing().get(2));
}
@Test
public void testCountUnique() {
InstantColumn column1 = InstantColumn.create("instants");
column1.append(baselineInst);
column1.append(baselineInst);
column1.append(afterInst);
column1.appendMissing();
assertEquals(3, column1.countUnique());
}
@Test
public void testCustomParser() {
class CustomParser extends AbstractColumnParser<Instant> {
private final List<String> VALID_VALUES = Arrays.asList("now");
public CustomParser() {
super(ColumnType.INSTANT);
}
@Override
public boolean canParse(String s) {
return true;
}
@Override
public Instant parse(String s) {
return VALID_VALUES.contains(s) ? Instant.now() : null;
}
}
InstantColumn column1 = InstantColumn.create("instants");
column1.setParser(new CustomParser());
// Just do enough to ensure the parser is wired up correctly
column1.appendCell("not now");
assertTrue(column1.isMissing(0));
column1.appendCell("now");
assertFalse(column1.isMissing(1));
}
}