public void FixTranspositionTest2()
{
var orig = "baaaq";
var entered = "zzzaaabbq";
var alignments = LongestCommonSubsequence.LeftAlignedLCS(orig, entered);
var additions = LongestCommonSubsequence.GetAddedCharIndices(entered, alignments);
var omissions = LongestCommonSubsequence.GetMissingCharIndices(orig, alignments);
var fixedouts = LongestCommonSubsequence.FixTranspositions(alignments, additions, omissions, orig, entered);
var entered2 = fixedouts.Item1;
var alignments2 = fixedouts.Item2;
var additions2 = fixedouts.Item3;
var omissions2 = fixedouts.Item4;
var deltas = fixedouts.Item5;
Assert.AreEqual(3, deltas.Head);
Assert.AreEqual("bzzzaaabq", entered2);
int[] correct_additions = { 1, 2, 3, 7 };
Assert.AreEqual(true, correct_additions.SequenceEqual<int>(additions2));
int[] correct_omissions = { };
Assert.AreEqual(true, correct_omissions.SequenceEqual<int>(omissions2));
Tuple<int, int>[] correct_alignments = { new Tuple<int, int>(0, 0), new Tuple<int, int>(1, 4), new Tuple<int, int>(2, 5), new Tuple<int, int>(3, 6), new Tuple<int, int>(4, 8) };
Assert.AreEqual(true, correct_alignments.SequenceEqual<Tuple<int, int>>(alignments2));
}