Пример #1
0
        public void TestCustomCode()
        {
            var visualScript = new VisualScriptAsset();

            // Build blocks
            var functionStart = new FunctionStartBlock();
            var writeTrue     = new CustomCodeBlock {
                Code = "System.Console.Write(true);"
            };
            var method = new Method {
                Name = "Test"
            };

            method.Blocks.Add(functionStart);
            method.Blocks.Add(writeTrue);

            // Generate slots
            foreach (var block in method.Blocks)
            {
                block.Value.GenerateSlots(block.Value.Slots, new SlotGeneratorContext());
            }

            // Build links
            method.Links.Add(new Link(functionStart, writeTrue));

            visualScript.Methods.Add(method);

            // Test
            TestAndCompareOutput(visualScript, "True", testInstance => testInstance.Test());
        }
Пример #2
0
        public void TestVariableGet()
        {
            var visualScript = new VisualScriptAsset();

            var condition = new Property("bool", "Condition");

            visualScript.Properties.Add(condition);

            // Build blocks
            // TODO: Switch to a simple Write(variable) later, so that we don't depend on ConditionalBranchBlock for this test?
            var functionStart = new FunctionStartBlock();
            var conditionGet  = new VariableGet {
                Name = condition.Name
            };
            var conditionalBranch = new ConditionalBranchBlock();
            var writeTrue         = new CustomCodeBlock {
                Code = "System.Console.Write(true);"
            };
            var writeFalse = new CustomCodeBlock {
                Code = "System.Console.Write(false);"
            };
            var method = new Method {
                Name = "Test"
            };

            method.Blocks.Add(functionStart);
            method.Blocks.Add(conditionGet);
            method.Blocks.Add(conditionalBranch);
            method.Blocks.Add(writeTrue);
            method.Blocks.Add(writeFalse);

            // Generate slots
            foreach (var block in method.Blocks)
            {
                block.Value.GenerateSlots(block.Value.Slots, new SlotGeneratorContext());
            }

            // Build links
            method.Links.Add(new Link(functionStart, conditionalBranch));
            method.Links.Add(new Link(conditionGet.ValueSlot, conditionalBranch.ConditionSlot));
            method.Links.Add(new Link(conditionalBranch.TrueSlot, writeTrue));
            method.Links.Add(new Link(conditionalBranch.FalseSlot, writeFalse));

            visualScript.Methods.Add(method);

            // Test
            TestAndCompareOutput(visualScript, "True", testInstance =>
            {
                testInstance.Condition = true;
                testInstance.Test();
            });

            TestAndCompareOutput(visualScript, "False", testInstance =>
            {
                testInstance.Condition = false;
                testInstance.Test();
            });
        }