public void CartesianProductDistinctPairs() { var expected = new[] { new [] { new[] { 1 }, new[] { 2 }, new[] { 3 }, new[] { 4 }, new[] { 5 }, }, new [] { new[] { 1, 2 }, new[] { 1, 3 }, new[] { 1, 4 }, new[] { 1, 5 }, new[] { 2, 3 }, new[] { 2, 4 }, new[] { 2, 5 }, new[] { 3, 4 }, new[] { 3, 5 }, new[] { 4, 5 }, }, new [] { new[] { 1, 2, 3 }, new[] { 1, 2, 4 }, new[] { 1, 2, 5 }, new[] { 1, 3, 4 }, new[] { 1, 3, 5 }, new[] { 1, 4, 5 }, new[] { 2, 3, 4 }, new[] { 2, 3, 5 }, new[] { 2, 4, 5 }, new[] { 3, 4, 5 }, }, new [] { new[] { 1, 2, 3, 4 }, new[] { 1, 2, 3, 5 }, new[] { 1, 2, 4, 5 }, new[] { 1, 3, 4, 5 }, new[] { 2, 3, 4, 5 }, }, new [] { new[] { 1, 2, 3, 4, 5 } } }; Assert.Equal(expected, MatrixExtensions.CartesianProductDistinctPairs(5)); }