public void TranslateTest3()
{
string[] colNames = { "col1", "col2", "col3" };
DataTable table = new DataTable("TranslateTest1 Table");
table.Columns.Add(colNames);
table.Rows.Add(1, 2, 3);
table.Rows.Add(1, 3, 5);
table.Rows.Add(1, 4, 7);
table.Rows.Add(2, 4, 6);
table.Rows.Add(2, 5, 8);
table.Rows.Add(2, 6, 10);
table.Rows.Add(3, 4, 5);
table.Rows.Add(3, 5, 7);
table.Rows.Add(3, 6, 9);
// values 1,2,3 are in column 1
// values 2,3,4,5,6 in column 2
// values 3,5,6,7,8,9,10 in column 3
var codeBook = new Codification(table);
Matrix.IsEqual(new int[] { 0, 0, 0 }, codeBook.Translate(new[] { "1", "2", "3" }));
Matrix.IsEqual(new int[] { 0, 1, 1 }, codeBook.Translate(new[] { "1", "3", "5" }));
Matrix.IsEqual(new int[] { 0, 2, 2 }, codeBook.Translate(new[] { "1", "4", "7" }));
Matrix.IsEqual(new int[] { 1, 2, 3 }, codeBook.Translate(new[] { "2", "4", "6" }));
Matrix.IsEqual(new int[] { 1, 3, 4 }, codeBook.Translate(new[] { "2", "5", "8" }));
Matrix.IsEqual(new int[] { 1, 4, 5 }, codeBook.Translate(new[] { "2", "6", "10" }));
Matrix.IsEqual(new int[] { 2, 2, 1 }, codeBook.Translate(new[] { "3", "4", "5" }));
Matrix.IsEqual(new int[] { 2, 3, 2 }, codeBook.Translate(new[] { "3", "5", "7" }));
Matrix.IsEqual(new int[] { 2, 4, 6 }, codeBook.Translate(new[] { "3", "6", "9" }));
Matrix.IsEqual(new int[] { 2 }, codeBook.Translate(new[] { "3" }));
Matrix.IsEqual(new int[] { 2, 4 }, codeBook.Translate(new[] { "3", "6" }));
Matrix.IsEqual(new int[] { 2, 4, 6 }, codeBook.Translate(new[] { "3", "6", "9" }));
bool thrown = false;
try { codeBook.Translate(new[] { "3", "6", "9", "10" }); }
catch (Exception) { thrown = true; }
Assert.IsTrue(thrown);
}