public void FixTranspositionTest()
{
var orig = "aaabq";
var entered = "bbzzzaaaq";
var ta = LongestCommonSubsequence.LCS_Char(orig, entered);
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 = { 0, 1, 2, 3 };
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,4), new Tuple<int,int>(1,5), new Tuple<int,int>(2,6), new Tuple<int,int>(3,7), new Tuple<int,int>(4,8) };
Assert.AreEqual(true, correct_alignments.SequenceEqual<Tuple<int,int>>(alignments2));
}