public void EscapeBracketInInterpolation()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value=320",
                                              "$\"Use {{} to {\"interpolate\"}.\""
                                              ));

            Assert.AreEqual("Use {} to interpolate.", script.Execute());
        }
Exemplo n.º 2
0
        public void CompareIntWithSubProperty()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$test=0",
                                              "$test>this.property.length"
                                              ), new Variable("this", this));

            Assert.DoesNotThrow(() => script.Execute());
        }
Exemplo n.º 3
0
        public void DefaultParameterValueSpecified()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "parameter($value, \"int\", 5)",
                                              "return($value*$value)"
                                              ));

            Assert.AreEqual(9, script.Execute(new Variable("value", 3)));
        }
Exemplo n.º 4
0
        public void DefaultParameterValueNotSpecified()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "parameter($value, \"int\", 5)",
                                              "return($value*$value)"
                                              ));

            Assert.AreEqual(25, script.Execute());
        }
        public void MultipleInterpolations()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value=320",
                                              "$\"There are {7+4} more ways to {\"do it\"} but lets keep it at that.\""
                                              ));

            Assert.AreEqual("There are 11 more ways to do it but lets keep it at that.", script.Execute());
        }
        public void Interpolation()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value=320",
                                              "$\"Like {$value} reasons to hate it.\""
                                              ));

            Assert.AreEqual("Like 320 reasons to hate it.", script.Execute());
        }
Exemplo n.º 7
0
        public void CallMethodWithOutParameter()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$variable=0",
                                              "$test.outparameter(ref($variable))",
                                              "return($variable)"
                                              ), new Variable("test", this));

            Assert.AreEqual(42, script.Execute());
        }
Exemplo n.º 8
0
 public void MixedMultiLineAndLineComments()
 {
     Assert.DoesNotThrow(() => {
         parser.Parse(ScriptCode.Create(
                          "/* ----",
                          "// bla bla bla ",
                          "// bla bla bla ",
                          "*/"
                          ));
     });
 }
        public void SetEntryAsProperty()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value = {}",
                                              "$value.number=60",
                                              "return($value.number)"
                                              ));


            Assert.AreEqual(60, script.Execute());
        }
Exemplo n.º 10
0
        public void DetectVariableInitialization()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$parameter=8",
                                              "method.call($parameter)"
                                              ), new Variable("method"));
            ParameterExtractor extractor = new ParameterExtractor();

            extractor.Visit(script);
            Assert.That(!extractor.Parameters.Any());
        }
        public void InitializeDictionary()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$dic={",
                                              "  \"value\": 70",
                                              "}",
                                              "return($dic[\"value\"])"
                                              ));

            Assert.AreEqual(70, script.Execute <int>());
        }
        public void ReadCasedEntryAsProperty()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value = {",
                                              "  \"Number\" : 60",
                                              "}",
                                              "return($value.Number)"
                                              ));


            Assert.AreEqual(60, script.Execute());
        }
        public void VariableAsValue()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$value=70",
                                              "$dic={",
                                              "  \"value\": $value",
                                              "}",
                                              "return($dic[\"value\"])"
                                              ));

            Assert.AreEqual(70, script.Execute <int>());
        }
Exemplo n.º 14
0
        public void ExecuteExpressionInTask()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$result=0",
                                              "$t=new task($result=5)",
                                              "$t.start()",
                                              "$t.wait()",
                                              "$result"
                                              ));

            Assert.AreEqual(5, script.Execute());
        }
Exemplo n.º 15
0
        public void ArrayParameter()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "parameter($collection, \"int[]\")",
                                              "$result=0",
                                              "foreach($number,$collection)",
                                              "  $result+=$number",
                                              "return($result)"
                                              ));

            Assert.AreEqual(6, script.Execute(new Variable("collection", new[] { 1, 2, 3 })));
        }
        public void ReturnDictionary()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$dic={",
                                              "  \"value\": 70",
                                              "}"
                                              ));

            Dictionary <object, object> result = script.Execute <Dictionary <object, object> >();

            Assert.AreEqual(70, result["value"]);
        }
Exemplo n.º 17
0
        public void AwaitTask()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$t=new task({",
                                              "  3+8",
                                              "})",
                                              "await($t)"
                                              ));
            int result = script.Execute <int>();

            Assert.AreEqual(11, result);
        }
        public void ImplicitExecute()
        {
            ScriptParser parser = new ScriptParser();

            parser.MethodResolver = new ResourceScriptMethodProvider(typeof(ImportTests).Assembly, parser);
            IScript script = parser.Parse(
                ScriptCode.Create(
                    "$method=import(\"Scripting.Tests.Scripts.External.increasedbyone.ns\")",
                    "return($method(10))"
                    ));

            Assert.AreEqual(11, script.Execute());
        }
Exemplo n.º 19
0
        public void DetectImplicitParameterInSwitch()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "switch($condition)",
                                              "case(1) { return (4) }"
                                              ));
            ParameterExtractor extractor = new ParameterExtractor();

            extractor.Visit(script);
            Assert.AreEqual(1, extractor.Parameters.Count());
            Assert.AreEqual("condition", extractor.Parameters.First().Name);
            Assert.AreEqual(false, extractor.Parameters.First().IsOptional);
        }
        public void ImportAndExecuteExternal(string resource)
        {
            ScriptParser parser = new ScriptParser();

            parser.MethodResolver = new ResourceScriptMethodProvider(typeof(ImportTests).Assembly, parser);
            IScript script = parser.Parse(
                ScriptCode.Create(
                    "$method=import($script)",
                    "$method()"
                    ));

            Assert.DoesNotThrow(() => script.Execute(new Variable("script", resource)));
        }
        public void MultipleValuesInDictionary()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$dic={",
                                              "  \"value\": 70,",
                                              "  \"number\": 60",
                                              "}"
                                              ));

            Dictionary <object, object> result = script.Execute <Dictionary <object, object> >();

            Assert.AreEqual(60, result["number"]);
        }
Exemplo n.º 22
0
        public void ExceptionInCatchStatementIsResolved()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "try",
                                              "  method.call(3)",
                                              "catch",
                                              "  return($exception.message)"
                                              ), new Variable("method"));

            ParameterExtractor extractor = new ParameterExtractor();

            extractor.Visit(script);
            Assert.That(!extractor.Parameters.Any());
        }
Exemplo n.º 23
0
 public void CommentAtEndOfBlock()
 {
     Assert.DoesNotThrow(() => {
         parser.Parse(ScriptCode.Create(
                          "$count=5",
                          "while(count-->0){",
                          "  if(true) {",
                          "    $result=0",
                          "  }",
                          "  // comment at end of block",
                          "}"
                          ));
     });
 }
        public void CallGenericExtensionMethod()
        {
            IScriptParser parser = new ScriptParser();

            parser.Extensions.AddExtensions <EnumerableExtensions>();

            IScript script = parser.Parse(ScriptCode.Create(
                                              "$input",
                                              "$firstelement=$input.farstordefault()",
                                              "$firstelement"
                                              ));

            Assert.AreEqual(5, script.Execute(new Variable("input", new[] { 5, 9, 1 })));
        }
Exemplo n.º 25
0
        public void DetectParameterAfterVariableInitializationInInnerBlock()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "if(20) {",
                                              "  $parameter=8",
                                              "}",
                                              "method.call($parameter)"
                                              ), new Variable("method"));
            ParameterExtractor extractor = new ParameterExtractor();

            extractor.Visit(script);
            Assert.AreEqual(1, extractor.Parameters.Count());
            Assert.AreEqual("parameter", extractor.Parameters.First().Name);
            Assert.AreEqual(false, extractor.Parameters.First().IsOptional);
        }
Exemplo n.º 26
0
        public void CallSingleParameterUsingDictionaryConversion()
        {
            IScript script = parser.Parse(
                ScriptCode.Create(
                    "$test.methodwithsingleparameter(",
                    "  \"success\", ",
                    "  {",
                    "    \"name\": \"n\",",
                    "    \"value\": 42",
                    "  }",
                    ")"),
                new Variable("test", this));

            Assert.AreEqual("success:n=42", script.Execute());
        }
        public void DictionaryInArray()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$dic=[{",
                                              "  \"value\": 70",
                                              "},{" +
                                              "  \"value\": 42",
                                              "}]",
                                              "return($dic[1])"
                                              ));

            Dictionary <object, object> result = script.Execute <Dictionary <object, object> >();

            Assert.AreEqual(42, result["value"]);
        }
        public void PreferGenericExtension()
        {
            IScriptParser parser = new ScriptParser();

            parser.Extensions.AddExtensions <EnumerableExtensions>();

            // the generic extension actually returns the last instead of the first
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$input",
                                              "$firstelement=$input.first()",
                                              "$firstelement"
                                              ));

            Assert.AreEqual(1, script.Execute(new Variable("input", new[] { 5, 9, 1 })));
        }
        public void DictionaryAsComplexArgument()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$host.callcomplex({",
                                              "  \"parameter\": {",
                                              "    \"name\" : \"faxen\",",
                                              "    \"value\" : \"schmutz\"",
                                              "  }",
                                              "  \"count\": 7,",
                                              "  \"numbers\":[1,2,3]",
                                              "})"
                                              ), new Variable("host", this));

            Assert.DoesNotThrow(() => script.Execute());
        }
        public void DictionaryAsMethodArgument()
        {
            IScript script = parser.Parse(ScriptCode.Create(
                                              "$result=new list()",
                                              "$result.add({",
                                              "  \"value\": 70,",
                                              "  \"number\": 60",
                                              "})",
                                              "return ($result)"
                                              ));

            List <object> result = script.Execute <List <object> >();

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(60, (result[0] as Dictionary <object, object>)["number"]);
        }