package com.github.liblevenshtein.assertion;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import com.github.liblevenshtein.transducer.Position;
import com.github.liblevenshtein.transducer.StandardPositionTransitionFunction;
import com.github.liblevenshtein.transducer.State;
import static com.github.liblevenshtein.assertion.StandardPositionTransitionFunctionAssertions.assertThat;
public class StandardPositionTransitionFunctionAssertionsTest {
private static final int N = 2;
private static final Position POSITION = new Position(0, 0);
private static final boolean[] CHARACTERISTIC_VECTOR = {true, false};
private static final int OFFSET = 0;
private final ThreadLocal<StandardPositionTransitionFunction> transition = new ThreadLocal<>();
private final State output = mock(State.class);
@BeforeMethod
public void setUp() {
transition.set(mock(StandardPositionTransitionFunction.class));
}
@Test
public void testTransitionsTo() {
when(transition.get().of(N, POSITION, CHARACTERISTIC_VECTOR, OFFSET))
.thenReturn(output);
assertThat(transition.get())
.transitionsTo(output, N, POSITION, CHARACTERISTIC_VECTOR, OFFSET);
}
@Test(expectedExceptions = AssertionError.class)
public void testTransitionsToAgainstNonNullTransition() {
when(transition.get().of(N, POSITION, CHARACTERISTIC_VECTOR, OFFSET))
.thenReturn(null);
assertThat(transition.get())
.transitionsTo(output, N, POSITION, CHARACTERISTIC_VECTOR, OFFSET);
}
@Test(expectedExceptions = AssertionError.class)
public void testTransitionsToAgainstInvalidTransition() {
final State invalid = mock(State.class);
when(transition.get().of(N, POSITION, CHARACTERISTIC_VECTOR, OFFSET))
.thenReturn(invalid);
assertThat(transition.get())
.transitionsTo(output, N, POSITION, CHARACTERISTIC_VECTOR, OFFSET);
}
}