package com.github.liblevenshtein.transducer;
import java.util.Comparator;
import org.testng.annotations.Test;
import static com.github.liblevenshtein.assertion.StateAssertions.assertThat;
public class StateTest {
@Test
public void testInsertionAndIterationOperations() {
final Position p00 = new Position(0, 0);
final Position p01 = new Position(0, 1);
final Position p10 = new Position(1, 0);
final Position p11 = new Position(1, 1);
final Comparator<Position> comparator = new StandardPositionComparator();
final State state = new State();
assertThat(state)
.hasHead(null)
.head(p00)
.hasHead(p00)
.iterator()
.hasNext(p00)
.doesNotHaveNext();
assertThat(state)
.hasHead(p00)
.add(p01)
.iterator()
.hasNext(p00)
.hasNext(p01)
.doesNotHaveNext();
assertThat(state)
.hasHead(p00)
.insertAfter(p00, p10)
.insertAfter(p00, p11)
.iterator()
.hasNext(p00)
.hasNext(p11)
.hasNext(p10)
.hasNext(p01)
.doesNotHaveNext();
state.sort(comparator);
assertThat(state)
.iterator()
.hasNext(p00)
.hasNext(p01)
.hasNext(p10)
.hasNext(p11)
.doesNotHaveNext();
state.remove(p10, p11).remove(null, p00);
assertThat(state)
.hasHead(p01)
.iterator()
.hasNext(p01)
.hasNext(p10)
.doesNotHaveNext();
}
}