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.State;
import com.github.liblevenshtein.transducer.StateTransitionFunction;
import static com.github.liblevenshtein.assertion.StateTransitionFunctionAssertions.assertThat;
public class StateTransitionFunctionAssertionsTest {
private final boolean[] characteristicVector = {true, false};
private final ThreadLocal<StateTransitionFunction> transition = new ThreadLocal<>();
private final State input = mock(State.class);
private final State output = mock(State.class);
@BeforeMethod
public void setUp() {
transition.set(mock(StateTransitionFunction.class));
}
@Test
public void testTransitionsTo() {
when(transition.get().of(input, characteristicVector)).thenReturn(output);
assertThat(transition.get()).transitionsTo(output, input, characteristicVector);
assertThat(transition.get()).transitionsTo(null, null, characteristicVector);
}
@Test(expectedExceptions = AssertionError.class)
public void testTransitionsToAgainstNonNullTransition() {
when(transition.get().of(input, characteristicVector)).thenReturn(output);
assertThat(transition.get()).transitionsTo(null, input, characteristicVector);
}
@Test(expectedExceptions = AssertionError.class)
public void testTransitionsToAgainstInvalidTransition() {
assertThat(transition.get()).transitionsTo(output, input, characteristicVector);
}
}