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.distance.IDistance;
import com.github.liblevenshtein.transducer.Candidate;
import static com.github.liblevenshtein.assertion.CandidateAssertions.assertThat;
public class CandidateAssertionsTest {
private static final String FOO = "foo";
private static final String BAR = "bar";
private final ThreadLocal<IDistance<String>> distance = new ThreadLocal<>();
@BeforeMethod
@SuppressWarnings("unchecked")
public void setUp() {
distance.set(mock(IDistance.class));
}
@Test
public void testHasDistance() {
final Candidate candidate = new Candidate(BAR, 3);
when(distance.get().between(FOO, BAR)).thenReturn(3);
assertThat(candidate).hasDistance(distance.get(), FOO);
}
@Test(expectedExceptions = AssertionError.class)
public void testHasDistanceAgainstViolation() {
final Candidate candidate = new Candidate(BAR, 2);
when(distance.get().between(FOO, BAR)).thenReturn(3);
assertThat(candidate).hasDistance(distance.get(), FOO);
}
}