package edu.cmu.sphinx.alignment;
import static java.util.Arrays.asList;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.contains;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import org.hamcrest.Matcher;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import edu.cmu.sphinx.util.Utilities;
public class TextAlignerSmallTest {
@DataProvider(name = "words")
public static Object[][] createWords() {
return new Object[][] {
// No match.
{
asList("foo", "foo"),
contains(-1, -1)},
// Align a single tuple.
{
asList("foo", "baz"),
contains(2, 3)},
// Align disjoint tuples.
{
asList("foo", "bar", "foo", "bar", "baz", "42"),
contains(0, 1, 2, 4, 5, 6)},
// Align overlapping tuples.
{
asList("foo", "bar", "foo", "baz", "bar"),
contains(0, 1, 2, 3, 4)},
// {
// asList("foo", "bar", "foo", "x", "foo", "baz", "bar"),
// contains(0, 1, 2, -1, -1, 3, 4)},
// {
// asList("foo", "bar", "foo", "foo", "baz", "bar", "42"),
// contains(0, 1, 2, -1, -1, -1)},
};
}
private LongTextAligner aligner;
@BeforeClass
public void setUp() throws IOException {
URL url = getClass().getResource("transcription-small.txt");
ArrayList<String> words = new ArrayList<String>();
Scanner scanner = new Scanner(url.openStream());
while (scanner.hasNext()) {
words.add(scanner.next());
}
scanner.close();
aligner = new LongTextAligner(words, 2);
}
@Test(dataProvider = "words")
public void align(List<String> words, Matcher<List<Integer>> matcher) {
assertThat(Utilities.asList(aligner.align(words)), matcher);
}
@Test(enabled=false)
public void alignRange() {
}
}