public void ExecuteTest4()
        {
            var func   = new DelegateExpression(p => 1.0);
            var result = func.Execute();

            Assert.Equal(1.0, result);
        }
        public void EqualDiffTypeTest()
        {
            var exp1 = new DelegateExpression(p => 1.0);
            var exp2 = new Number(2);

            Assert.False(exp1.Equals(exp2));
        }
        public void EqualSameTest()
        {
            Func <ExpressionParameters, object> d = p => 1.0;
            var exp1 = new DelegateExpression(d);
            var exp2 = new DelegateExpression(d);

            Assert.True(exp1.Equals(exp2));
        }
        public void ExecuteTest1()
        {
            var parameters = new ParameterCollection()
            {
                new Parameter("x", 10)
            };
            var func = new DelegateExpression(p => (double)p.Variables["x"] + 1);

            var result = func.Execute(parameters);

            Assert.Equal(11.0, result);
        }
        public void ExecuteTest3()
        {
            var uf1   = new UserFunction("func", new[] { Variable.X }, 1);
            var func  = new DelegateExpression(p => (double)p.Variables["x"] == 10 ? 0 : 1);
            var funcs = new FunctionCollection
            {
                { uf1, func }
            };
            var uf2    = new UserFunction("func", new[] { new Number(12) }, 1);
            var result = uf2.Execute(new ExpressionParameters(funcs));

            Assert.Equal(1, result);
        }
Example #6
0
 /// <summary>
 /// Analyzes the specified expression.
 /// </summary>
 /// <param name="exp">The expression.</param>
 /// <returns>
 /// The result of analysis.
 /// </returns>
 /// <exception cref="System.NotSupportedException">Always.</exception>
 public virtual TResult Analyze(DelegateExpression exp)
 {
     throw new NotSupportedException();
 }
Example #7
0
 public string Analyze(DelegateExpression exp)
 {
     return("{Delegate Expression}");
 }
        public void EqualRefNullTest()
        {
            var exp = new DelegateExpression(p => 1.0);

            Assert.False(exp.Equals(null));
        }
        public void EqualRefTest()
        {
            var exp = new DelegateExpression(p => 1.0);

            Assert.True(exp.Equals(exp));
        }
Example #10
0
        private static void GenerateDelegateExpression(ScriptGenerator generator, MemberSymbol symbol, DelegateExpression expression)
        {
            ScriptTextWriter writer = generator.Writer;

            AnonymousMethodSymbol anonymousMethod = expression.Method as AnonymousMethodSymbol;

            if (anonymousMethod != null)
            {
                writer.Write("function(");
                if ((anonymousMethod.Parameters != null) && (anonymousMethod.Parameters.Count != 0))
                {
                    int paramIndex = 0;
                    foreach (ParameterSymbol parameterSymbol in anonymousMethod.Parameters)
                    {
                        if (paramIndex > 0)
                        {
                            writer.Write(", ");
                        }
                        writer.Write(parameterSymbol.GeneratedName);

                        paramIndex++;
                    }
                }
                writer.WriteLine(") {");
                writer.Indent++;
                CodeGenerator.GenerateScript(generator, anonymousMethod);
                writer.Indent--;
                writer.Write("}");
            }
            else if ((expression.Method.Visibility & MemberVisibility.Static) != 0)
            {
                if (expression.Method.IsExtension)
                {
                    Debug.Assert(expression.Method.Parent.Type == SymbolType.Class);

                    ClassSymbol classSymbol = (ClassSymbol)expression.Method.Parent;
                    Debug.Assert(classSymbol.IsExtenderClass);

                    writer.Write(classSymbol.Extendee);
                    writer.Write(".");
                    writer.Write(expression.Method.GeneratedName);
                }
                else
                {
                    ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                    writer.Write(".");
                    writer.Write(expression.Method.GeneratedName);
                }
            }
            else
            {
                writer.Write("ss.bind('");
                writer.Write(expression.Method.GeneratedName);
                writer.Write("', ");
                ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                writer.Write(")");
            }
        }
Example #11
0
        private static void GenerateDelegateExpression(ScriptGenerator generator, MemberSymbol symbol, DelegateExpression expression)
        {
            ScriptTextWriter writer = generator.Writer;

            bool createDelegate = false;

            if ((expression.Method.Visibility & MemberVisibility.Static) == 0)
            {
                createDelegate = true;

                writer.Write("ss.Delegate.create(");
                ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                writer.WriteTrimmed(", ");
            }

            AnonymousMethodSymbol anonymousMethod = expression.Method as AnonymousMethodSymbol;

            if (anonymousMethod == null)
            {
                // TODO: This probably needs to handle global method roots...

                if (expression.Method.IsGlobalMethod == false)
                {
                    ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                    writer.Write(".");
                }
                writer.Write(expression.Method.GeneratedName);
            }
            else
            {
                writer.Write("function(");
                if ((anonymousMethod.Parameters != null) && (anonymousMethod.Parameters.Count != 0))
                {
                    bool   obfuscateParams   = generator.Options.Minimize;
                    string obfuscationPrefix = null;

                    int paramIndex = 0;
                    foreach (ParameterSymbol parameterSymbol in anonymousMethod.Parameters)
                    {
                        if (paramIndex > 0)
                        {
                            writer.WriteTrimmed(", ");
                        }
                        if (obfuscateParams)
                        {
                            if (paramIndex == 0)
                            {
                                obfuscationPrefix = "$p" + anonymousMethod.Depth.ToString(CultureInfo.InvariantCulture) + "_";
                            }
                            parameterSymbol.SetTransformedName(obfuscationPrefix + paramIndex);
                        }
                        writer.Write(parameterSymbol.GeneratedName);

                        paramIndex++;
                    }
                }
                writer.Write(")");
                writer.WriteTrimmed(" {");
                writer.WriteLine();
                writer.Indent++;
                CodeGenerator.GenerateScript(generator, anonymousMethod);
                writer.Indent--;
                writer.Write("}");
            }

            if (createDelegate)
            {
                writer.Write(")");
            }
        }
Example #12
0
        public void DelegateExpressionTest()
        {
            var exp = new DelegateExpression(param => 0d);

            Assert.Equal("{Delegate Expression}", exp.ToString(commonFormatter));
        }