提交 474c9f7b 编写于 作者: C Cyrus Najmabadi

Add tests.

上级 e0b34f7e
......@@ -7,92 +7,121 @@ namespace Microsoft.CodeAnalysis.UnitTests
{
public class EditDistanceTests
{
private static int GetEditDistance(string s, string t)
private static int VerifyEditDistance(string s, string t)
{
// We want the full edit distance, without bailing out early because we crossed the
// threshold.
return EditDistance.GetEditDistance(s, t);
var editDistance1 = EditDistance.GetEditDistance(s, t);
var editDistance2 = EditDistance.GetEditDistance(s, t, editDistance1);
Assert.Equal(editDistance1, editDistance2);
return editDistance1;
}
[Fact]
public void EditDistance0()
{
Assert.Equal(GetEditDistance("", ""), 0);
Assert.Equal(GetEditDistance("a", "a"), 0);
Assert.Equal(VerifyEditDistance("", ""), 0);
Assert.Equal(VerifyEditDistance("a", "a"), 0);
}
[Fact]
public void EditDistance1()
{
Assert.Equal(GetEditDistance("", "a"), 1);
Assert.Equal(GetEditDistance("a", ""), 1);
Assert.Equal(GetEditDistance("a", "b"), 1);
Assert.Equal(GetEditDistance("ab", "a"), 1);
Assert.Equal(GetEditDistance("a", "ab"), 1);
Assert.Equal(GetEditDistance("aabb", "abab"), 1);
Assert.Equal(VerifyEditDistance("", "a"), 1);
Assert.Equal(VerifyEditDistance("a", ""), 1);
Assert.Equal(VerifyEditDistance("a", "b"), 1);
Assert.Equal(VerifyEditDistance("ab", "a"), 1);
Assert.Equal(VerifyEditDistance("a", "ab"), 1);
Assert.Equal(VerifyEditDistance("aabb", "abab"), 1);
}
[Fact]
public void EditDistance2()
{
Assert.Equal(GetEditDistance("", "aa"), 2);
Assert.Equal(GetEditDistance("aa", ""), 2);
Assert.Equal(GetEditDistance("aa", "bb"), 2);
Assert.Equal(GetEditDistance("aab", "a"), 2);
Assert.Equal(GetEditDistance("a", "aab"), 2);
Assert.Equal(GetEditDistance("aababb", "ababab"), 2);
Assert.Equal(VerifyEditDistance("", "aa"), 2);
Assert.Equal(VerifyEditDistance("aa", ""), 2);
Assert.Equal(VerifyEditDistance("aa", "bb"), 2);
Assert.Equal(VerifyEditDistance("aab", "a"), 2);
Assert.Equal(VerifyEditDistance("a", "aab"), 2);
Assert.Equal(VerifyEditDistance("aababb", "ababab"), 2);
}
[Fact]
public void EditDistance3()
{
Assert.Equal(GetEditDistance("", "aaa"), 3);
Assert.Equal(GetEditDistance("aaa", ""), 3);
Assert.Equal(GetEditDistance("aaa", "bbb"), 3);
Assert.Equal(GetEditDistance("aaab", "a"), 3);
Assert.Equal(GetEditDistance("a", "aaab"), 3);
Assert.Equal(GetEditDistance("aababbab", "abababaa"), 3);
Assert.Equal(VerifyEditDistance("", "aaa"), 3);
Assert.Equal(VerifyEditDistance("aaa", ""), 3);
Assert.Equal(VerifyEditDistance("aaa", "bbb"), 3);
Assert.Equal(VerifyEditDistance("aaab", "a"), 3);
Assert.Equal(VerifyEditDistance("a", "aaab"), 3);
Assert.Equal(VerifyEditDistance("aababbab", "abababaa"), 3);
}
[Fact]
public void EditDistance4()
{
Assert.Equal(GetEditDistance("XlmReade", "XmlReader"), 2);
Assert.Equal(VerifyEditDistance("XlmReade", "XmlReader"), 2);
}
public void EditDistance5()
{
Assert.Equal(GetEditDistance("Zeil", "trials"), 4);
Assert.Equal(VerifyEditDistance("Zeil", "trials"), 4);
}
[Fact]
public void EditDistance6()
{
Assert.Equal(GetEditDistance("barking", "corkliness"), 6);
Assert.Equal(VerifyEditDistance("barking", "corkliness"), 6);
}
[Fact]
public void EditDistance7()
{
Assert.Equal(GetEditDistance("kitten", "sitting"), 3);
Assert.Equal(VerifyEditDistance("kitten", "sitting"), 3);
}
[Fact]
public void EditDistance8()
{
Assert.Equal(GetEditDistance("sunday", "saturday"), 3);
Assert.Equal(VerifyEditDistance("sunday", "saturday"), 3);
}
[Fact]
public void EditDistance9()
{
Assert.Equal(GetEditDistance("meilenstein", "levenshtein"), 4);
Assert.Equal(VerifyEditDistance("meilenstein", "levenshtein"), 4);
}
[Fact]
public void EditDistance10()
{
Assert.Equal(GetEditDistance("rosettacode", "raisethysword"), 8);
Assert.Equal(VerifyEditDistance("rosettacode", "raisethysword"), 8);
}
[Fact]
public void EditDistance11()
{
Assert.Equal(VerifyEditDistance("aaaab", "aaabc"), 2);
Assert.Equal(VerifyEditDistance("aaaab", "aabcc"), 3);
Assert.Equal(VerifyEditDistance("aaaab", "abccc"), 4);
Assert.Equal(VerifyEditDistance("aaaab", "bcccc"), 5);
Assert.Equal(VerifyEditDistance("aaaabb", "aaabbc"), 2);
Assert.Equal(VerifyEditDistance("aaaabb", "aabbcc"), 4);
Assert.Equal(VerifyEditDistance("aaaabb", "abbccc"), 5);
Assert.Equal(VerifyEditDistance("aaaabb", "bbcccc"), 6);
Assert.Equal(VerifyEditDistance("aaaabbb", "aaabbbc"), 2);
Assert.Equal(VerifyEditDistance("aaaabbb", "aabbbcc"), 4);
Assert.Equal(VerifyEditDistance("aaaabbb", "abbbccc"), 6);
Assert.Equal(VerifyEditDistance("aaaabbb", "bbbcccc"), 7);
Assert.Equal(VerifyEditDistance("aaaabbbb", "aaabbbbc"), 2);
Assert.Equal(VerifyEditDistance("aaaabbbb", "aabbbbcc"), 4);
Assert.Equal(VerifyEditDistance("aaaabbbb", "abbbbccc"), 6);
Assert.Equal(VerifyEditDistance("aaaabbbb", "bbbbcccc"), 8);
}
[Fact]
......@@ -109,7 +138,7 @@ public void TestMetric()
// OSA(CA,AC) + OSA(AC,ABC) >= OSA(CA,ABC) ... 1 + 1 >= 3 is not true.
//
// Being a metric is important so that we can properly use this with BKTrees.
Assert.Equal(GetEditDistance("CA", "ABC"), 2);
Assert.Equal(VerifyEditDistance("CA", "ABC"), 2);
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册