public static void AssertEqual(SelectClause expected, SelectClause actual) { expected.Switch( expectedStar => { Assert.True(actual.IsT0, $"Expected '*' but got '{actual}' instead"); }, expectedList => { Assert.True(actual.IsT1, $"Expected '{expected}' but got '{actual}' instead"); var actualList = actual.AsT1; Assert.Equal(expectedList.Columns.Count, actualList.Columns.Count); for (var i = 0; i < expectedList.Columns.Count; i++) { var expectedColumn = expectedList.Columns[i]; var actualColumn = actualList.Columns[i]; Assert.Equal(expectedColumn.Expression, actualColumn.Expression); Assert.Equal(expectedColumn.Alias, actualColumn.Alias); } } ); }