// Copyright 2014 Thomas Müller
// This file is part of MarMoT, which is licensed under GPLv3.
package marmot.test.util;
import static org.junit.Assert.*;
import marmot.util.LevenshteinLattice;
import org.junit.Test;
public class LevenshteinLatticeTest {
@Test
public void costTest() {
String input, output, expected, actual;
LevenshteinLattice lattice;
input = "A C B";
output = "A D B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
expected = "CCRCC";
assertEquals(expected, actual);
assertEquals(3, lattice.getDistance());
input = "A C B";
output = "A DD B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
expected = "CCIRCC";
assertEquals(expected, actual);
assertEquals(5, lattice.getDistance());
input = "A C B";
output = "A DDDD B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
expected = "CCIIIRCC";
assertEquals(expected, actual);
assertEquals(9, lattice.getDistance());
input = "A C B";
output = "A DDDDD B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
expected = "CCIIIIRCC";
assertEquals(expected, actual);
assertEquals(11, lattice.getDistance());
input = "A C B";
output = "A DDDDDD B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
expected = "CCIIIIIRCC";
assertEquals(expected, actual);
assertEquals(13, lattice.getDistance());
input = "C";
output = "DD";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
System.err.println(actual);
assertEquals(5, lattice.getDistance());
expected = "IR";
assertEquals(expected, actual);
input = "A CB";
output = "A DDDDD B";
lattice = new LevenshteinLattice(input, output, 2, 2, 3);
actual = lattice.searchOperationSequence();
assertEquals(13, lattice.getDistance());
expected = "CCIIIIIRC";
assertEquals(expected, actual);
}
@Test
public void test() {
String input, output, expected, actual;
LevenshteinLattice lattice;
input = "<i>This isn't a sentence.</i>";
output = "This is n't a santence .";
lattice = new LevenshteinLattice(input, output, 1, 1, 2);
actual = lattice.searchOperationSequence();
expected = "DDDCCCCCCCICCCCCCCRCCCCCCICDDDD";
assertEquals(expected, actual);
// Some special cases
input = "ABCD";
output = "";
lattice = new LevenshteinLattice(input, output, 1, 1, 2);
actual = lattice.searchOperationSequence();
expected = "DDDD";
assertEquals(expected, actual);
input = "";
output = "ABCD";
lattice = new LevenshteinLattice(input, output, 1, 1, 2);
actual = lattice.searchOperationSequence();
expected = "IIII";
assertEquals(expected, actual);
input = "";
output = "";
lattice = new LevenshteinLattice(input, output, 1, 1, 2);
actual = lattice.searchOperationSequence();
expected = "";
assertEquals(expected, actual);
input = "ABCD";
output = "ABCD";
lattice = new LevenshteinLattice(input, output, 1, 1, 2);
actual = lattice.searchOperationSequence();
expected = "CCCC";
assertEquals(expected, actual);
}
}