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); }
/// <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(); }
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)); }
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(")"); } }
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(")"); } }
public void DelegateExpressionTest() { var exp = new DelegateExpression(param => 0d); Assert.Equal("{Delegate Expression}", exp.ToString(commonFormatter)); }