A factory to create ScriptProcessor instances.
예제 #1
0
        public void VariableDeclarationTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var member = 3 } var test = new testClass(); test.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #2
0
        public void InterpolationTests()
        {
            var result = ScriptProcessorFactory.Run("var insert = \"{{World}}\"; var outer = $\"{{Hello}}, {insert}!\"; outer;");

            Assert.IsTrue(result is SString);
            Assert.AreEqual("{Hello}, {{World}}!", ((SString)result).Value);
        }
예제 #3
0
        public void PowerTests()
        {
            var result = ScriptProcessorFactory.Run("2**3");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 8);
        }
예제 #4
0
        public void IncrementTests()
        {
            var result = ScriptProcessorFactory.Run("var a = 13; a++; a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 14);
        }
예제 #5
0
        public void DecrementTests()
        {
            var result = ScriptProcessorFactory.Run("var b = 13; b--; b;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 12);
        }
예제 #6
0
        public void DivisionTests()
        {
            var result = ScriptProcessorFactory.Run("15/5");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #7
0
        public void MultiplicationTests()
        {
            var result = ScriptProcessorFactory.Run("5*3*-4");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, -60);
        }
예제 #8
0
        public void LogicalOrTests()
        {
            var result = ScriptProcessorFactory.Run("true || false");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);
        }
예제 #9
0
        public void ModuloTests()
        {
            var result = ScriptProcessorFactory.Run("5%2");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 1);
        }
예제 #10
0
        public void CustomFunctionTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var member = 0; function customFunction() { this.member = 3; } } var test = new testClass(); test.customFunction(); test.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #11
0
        public void AdditionTests()
        {
            var result = ScriptProcessorFactory.Run("1+4+6");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 11);
        }
예제 #12
0
        public void IfElseTests()
        {
            var result = ScriptProcessorFactory.Run("var a = 0; if (a > 0) { a = 5; } else { a = 10; } a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 10);
        }
예제 #13
0
        public void ForLoopTests()
        {
            var result = ScriptProcessorFactory.Run("var a = 0; for (var i = 0; i < 10; i++) { a++; } a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 10);
        }
예제 #14
0
        public void IndexerTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var member = 0; function indexer get indexerGet(accessor) { return this.member * accessor; } function indexer set indexerSet(accessor, value) { this.member = value / accessor; } } var test = new testClass(); test[3] = 9; test[3];");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 9);
        }
예제 #15
0
        public void AbstractTests()
        {
            var result = ScriptProcessorFactory.Run("class abstract baseClass { } var test = new baseClass();");

            // cannot instanciate abstract class:
            Assert.IsTrue(result is SError);
        }
예제 #16
0
        public void StaticFunctionTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var static member = 0; function static testFunction() { member = 3; } } testClass.testFunction(); testClass.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #17
0
        public void ReadonlyVarTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var readonly member = 0; } var test = new testClass(); test.member = 3; test.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 0);
        }
예제 #18
0
        public void StaticVarTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var static member = 0; } testClass.member = 3; testClass.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #19
0
        public void SubtractionTests()
        {
            var result = ScriptProcessorFactory.Run("12-4-6");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 2);
        }
예제 #20
0
        public void BreakTests()
        {
            var result = ScriptProcessorFactory.Run("var a = 0; for (var i = 0; i < 10; i++) { if (i > 5) { break; } a++; } a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 6);
        }
예제 #21
0
        public void ExtendsTests()
        {
            var result = ScriptProcessorFactory.Run("class abstract baseClass { var member = 3; function baseFunction() { this.member += 2; } } class extendingClass extends baseClass { function extendsFunction() { baseFunction(); } } var test = new extendingClass(); test.extendsFunction(); test.member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 5);
        }
예제 #22
0
        public void ContinueTests()
        {
            var result = ScriptProcessorFactory.Run("var a = 0; for (var i = 0; i < 10; i++) { if (i % 2 == 0) { a++; } } a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 5);
        }
예제 #23
0
        public void PropertyTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { var member = 0; function property get Member() { return member; } function property set Member(value) { member = value; } } var test = new testClass(); test.Member = 3; test.Member;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 3);
        }
예제 #24
0
        public void WhileLoopTests()
        {
            var processor = ScriptProcessorFactory.GetNew();
            var result    = processor.Run("var a = 0; while (a < 10) { a++; } a;");

            Assert.IsTrue(result is SNumber);
            Assert.AreEqual(((SNumber)result).Value, 10);
        }
예제 #25
0
        public void InstanciationTests()
        {
            var result = ScriptProcessorFactory.Run("class testClass { } var test = new testClass(); test;");

            Assert.IsTrue(result is SProtoObject);
            var protoObj = (SProtoObject)result;

            Assert.AreEqual(protoObj.Prototype.Name, "testClass");
        }
예제 #26
0
        public void NotEqualsTests()
        {
            SObject result    = null;
            var     processor = ScriptProcessorFactory.GetNew();

            result = processor.Run("2 != 3");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);

            result = processor.Run("2 !== 3");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);
        }
예제 #27
0
        public void SmallerThanTests()
        {
            SObject result    = null;
            var     processor = ScriptProcessorFactory.GetNew();

            result = processor.Run("2 < 3");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);

            result = processor.Run("3 < -5");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, false);

            result = processor.Run("\"test\" < -5");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, false);
        }
예제 #28
0
        public void GreaterThanOrEqualsTests()
        {
            SObject result    = null;
            var     processor = ScriptProcessorFactory.GetNew();

            result = processor.Run("3 >= 2");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);

            result = processor.Run("3 >= 3");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, true);

            result = processor.Run("\"test\" >= 0");

            Assert.IsTrue(result is SBool);
            Assert.AreEqual(((SBool)result).Value, false);
        }