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));
        }
Exemple #2
0
        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.");
                    }
                }
            }
        }
Exemple #3
0
        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());
                    }
                }
            }
        }