public void SequencesTest()
{
int[] symbols = { 2, 3, 2 };
int[][] expected =
{
new int[] { 0, 0, 0 },
new int[] { 0, 0, 1 },
new int[] { 0, 1, 0 },
new int[] { 0, 1, 1 },
new int[] { 0, 2, 0 },
new int[] { 0, 2, 1 },
new int[] { 1, 0, 0 },
new int[] { 1, 0, 1 },
new int[] { 1, 1, 0 },
new int[] { 1, 1, 1 },
new int[] { 1, 2, 0 },
new int[] { 1, 2, 1 },
};
int[][] actual = Combinatorics.Sequences(symbols).Select(x => (int[])x.Clone()).ToArray();
Assert.IsTrue(expected.IsEqual(actual));
}