public Tuple <System.Linq.Expressions.Expression[], System.Linq.Expressions.Expression[]> Transform() { var transformedTest = TestExpressions.Select(x => x.TransformRead()).ToArray(); var transformedBody = Body.Select(x => x.Transform()).ToArray(); return(new Tuple <System.Linq.Expressions.Expression[], System.Linq.Expressions.Expression[]>(transformedTest, transformedBody)); }
public void Equals_Success() { ExpressionEqualityComparer comparer = new ExpressionEqualityComparer(); var expressions = TestExpressions.ToArray(); for (int i = 0; i < expressions.Length; i++) { for (int j = 0; j < expressions.Length; j++) { bool isEqual = comparer.Equals(expressions[i], expressions[j]); if (i == j) { Assert.True(isEqual, $"Expression {i} {expressions[i]} compared with itself should be equal, but Equals() returns false."); } else { Assert.False(isEqual, $"Expression {i} {expressions[i]} compared with expression {j} ({expressions[j]}) should not be equal, but Equals() returns true."); } } } }
public async Task TestAllNodes() { global::System.String[] prefixes = new string[] { " # fob\r\n", "" }; global::System.String[] suffixes = new string[] { " # oar", "" }; foreach (global::System.String suffix in suffixes) { foreach (global::System.String prefix in prefixes) { foreach (global::System.String testCase in TestExpressions.Expressions) { if (testCase.StartsWith("yield")) { // not currently supported continue; } var text = prefix + testCase + suffix; string expected = String.Format("{1}def g():\r\n return {0}\r\n\r\ng(){2}", testCase, prefix, suffix); await SuccessTest(new Span(prefix.Length, testCase.Length), text, expected); } } } global::System.String[] bannedStmts = new[] { "break", "continue", "return abc" }; var allStmts = TestExpressions.Statements2x .Except(bannedStmts) .Select(text => new { Text = text, Version = PythonLanguageVersion.V27 }) .Concat( TestExpressions.Statements3x .Select(text => new { Text = text, Version = PythonLanguageVersion.V33 })); foreach (global::System.String suffix in suffixes) { foreach (global::System.String prefix in prefixes) { foreach (var stmtTest in allStmts) { var text = prefix + stmtTest.Text + suffix; global::System.String[] assignments = GetAssignments(text, stmtTest.Version); string expected; if (assignments.Length > 0 && stmtTest.Text != "del x") { expected = String.Format( "{1}def g():\r\n{0}\r\n return {3}\r\n\r\n{3} = g(){2}", TestExpressions.IndentCode(stmtTest.Text, " "), prefix, suffix, String.Join(", ", assignments) ); } else { expected = String.Format( "{1}def g():\r\n{0}\r\n\r\ng(){2}", TestExpressions.IndentCode(stmtTest.Text, " "), prefix, suffix ); } await SuccessTest(new Span(prefix.Length, stmtTest.Text.Length), text, expected, null, stmtTest.Version.ToVersion()); } } } }