Exemplo n.º 1
0
        public void ParseSeparatedSimpleAssignmentCommands()
        {
            Parser   parser  = new Parser("a=1;b=1;");
            ICommand command = parser.ParseCommand();

            Assert.IsNotNull(command);
            Assert.That(command is SetVariableCommand);

            SetVariableCommand scommand = (SetVariableCommand)command;

            Assert.AreEqual("a", scommand.Name);
            Assert.That(scommand.Expression is ConstantExpression);

            ConstantExpression cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            command = parser.ParseCommand();

            Assert.IsNotNull(command);
            Assert.That(command is SetVariableCommand);

            scommand = (SetVariableCommand)command;

            Assert.AreEqual("b", scommand.Name);
            Assert.That(scommand.Expression is ConstantExpression);

            cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            Assert.IsNull(parser.ParseCommand());
        }
Exemplo n.º 2
0
        public EventCommandVariable(SetVariableCommand refCommand, FrmEvent editor)
        {
            InitializeComponent();
            mMyCommand   = refCommand;
            mEventEditor = editor;
            mLoading     = true;
            InitLocalization();

            //Numerics
            cmbNumericCloneGlobalVar.Items.Clear();
            cmbNumericCloneGlobalVar.Items.AddRange(ServerVariableBase.Names);
            cmbNumericClonePlayerVar.Items.Clear();
            cmbNumericClonePlayerVar.Items.AddRange(PlayerVariableBase.Names);

            //Booleans
            cmbBooleanCloneGlobalVar.Items.Clear();
            cmbBooleanCloneGlobalVar.Items.AddRange(ServerVariableBase.Names);
            cmbBooleanClonePlayerVar.Items.Clear();
            cmbBooleanClonePlayerVar.Items.AddRange(PlayerVariableBase.Names);

            if (mMyCommand.VariableType == VariableTypes.ServerVariable)
            {
                rdoGlobalVariable.Checked = true;
            }
            else
            {
                rdoPlayerVariable.Checked = true;
            }

            mLoading = false;
            InitEditor();
        }
Exemplo n.º 3
0
        public void ExecuteWhileCommand()
        {
            IExpression     incrementX = new ArithmeticBinaryExpression(ArithmeticOperator.Add, new ConstantExpression(1), new VariableExpression("a"));
            IExpression     decrementY = new ArithmeticBinaryExpression(ArithmeticOperator.Subtract, new VariableExpression("b"), new ConstantExpression(1));
            ICommand        setX       = new SetVariableCommand("a", incrementX);
            ICommand        setY       = new SetVariableCommand("b", decrementY);
            List <ICommand> commands   = new List <ICommand>();

            commands.Add(setX);
            commands.Add(setY);
            ICommand    command = new CompositeCommand(commands);
            IExpression yexpr   = new VariableExpression("b");

            WhileCommand whilecmd = new WhileCommand(yexpr, command);

            Context context = new Context();

            context.SetValue("a", 0);
            context.SetValue("b", 5);

            whilecmd.Execute(context);

            Assert.AreEqual(0, context.GetValue("b"));
            Assert.AreEqual(5, context.GetValue("a"));
        }
Exemplo n.º 4
0
        public void ParseTwoLineSimpleAssignmentCommands()
        {
            Parser   parser  = new Parser("a=1\r\nb=1");
            ICommand command = parser.ParseCommand();

            Assert.IsNotNull(command);
            Assert.IsInstanceOfType(command, typeof(SetVariableCommand));

            SetVariableCommand scommand = (SetVariableCommand)command;

            Assert.AreEqual("a", scommand.Name);
            Assert.IsInstanceOfType(scommand.Expression, typeof(ConstantExpression));

            ConstantExpression cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            command = parser.ParseCommand();

            Assert.IsNotNull(command);
            Assert.IsInstanceOfType(command, typeof(SetVariableCommand));

            scommand = (SetVariableCommand)command;

            Assert.AreEqual("b", scommand.Name);
            Assert.IsInstanceOfType(scommand.Expression, typeof(ConstantExpression));

            cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            Assert.IsNull(parser.ParseCommand());
        }
Exemplo n.º 5
0
        private static string GetVariableModText(SetVariableCommand command, StringVariableMod mod)
        {
            var varvalue = "";

            switch (mod.ModType)
            {
            case Enums.VariableMods.Set:
                varvalue = Strings.EventCommandList.setvariable.ToString(mod.Value);

                break;

            case Enums.VariableMods.Replace:
                varvalue = Strings.EventCommandList.replace.ToString(mod.Value, mod.Replace);

                break;
            }

            if (command.VariableType == VariableTypes.PlayerVariable)
            {
                return(Strings.EventCommandList.playervariable.ToString(
                           PlayerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            if (command.VariableType == VariableTypes.ServerVariable)
            {
                return(Strings.EventCommandList.globalvariable.ToString(
                           ServerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            return(Strings.EventCommandList.invalid);
        }
Exemplo n.º 6
0
        public void ExecuteCompositeCommand()
        {
            BindingEnvironment environment = new BindingEnvironment();

            SetVariableCommand command1 = new SetVariableCommand("foo", new ConstantExpression("bar"));
            SetVariableCommand command2 = new SetVariableCommand("one", new ConstantExpression(1));
            SetVariableCommand command3 = new SetVariableCommand("bar", new VariableExpression("foo"));

            List <ICommand> commands = new List <ICommand>();

            commands.Add(command1);
            commands.Add(command2);
            commands.Add(command3);

            CompositeCommand command = new CompositeCommand(commands);

            environment.SetValue("foo", null);
            environment.SetValue("one", null);

            command.Execute(environment);

            Assert.AreEqual("bar", environment.GetValue("foo"));
            Assert.AreEqual(1, environment.GetValue("one"));
            Assert.AreEqual("bar", environment.GetValue("bar"));
        }
Exemplo n.º 7
0
        public void ExecuteForCommand()
        {
            ICommand        setX     = new SetVariableCommand("x", new ConstantExpression(0));
            ICommand        setY     = new SetVariableCommand("y", new ConstantExpression(0));
            List <ICommand> commands = new List <ICommand>();

            commands.Add(setX);
            commands.Add(setY);
            ICommand initialCommand = new CompositeCommand(commands);

            IExpression condition = new CompareExpression(ComparisonOperator.Less, new VariableExpression("x"), new ConstantExpression(6));

            IExpression addXtoY = new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("y"), new VariableExpression("x"));
            ICommand    addToY  = new SetVariableCommand("y", addXtoY);

            ICommand endCommand = new SetVariableCommand("x", new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("x"), new ConstantExpression(1)));

            ForCommand forcmd = new ForCommand(initialCommand, condition, endCommand, addToY);

            Context context = new Context();

            context.SetValue("y", null);

            forcmd.Execute(context);

            Assert.AreEqual(15, context.GetValue("y"));
        }
Exemplo n.º 8
0
        public void ExecuteSetCommand()
        {
            SetVariableCommand command = new SetVariableCommand("foo", new ConstantExpression("bar"));

            this.host.Execute(command);

            Assert.AreEqual("bar", this.host.Machine.Environment.GetValue("foo"));
        }
Exemplo n.º 9
0
        public void ExecuteSetLocalVariableCommandWithVariable()
        {
            Context            context = new Context();
            SetVariableCommand command = new SetVariableCommand("a", new ConstantExpression("bar"));

            command.Execute(context);

            Assert.AreEqual("bar", context.GetValue("a"));
        }
Exemplo n.º 10
0
        public void SetVariable()
        {
            Context            context = new Context();
            SetVariableCommand command = new SetVariableCommand("One", new ConstantExpression(1));
            object             result  = command.Execute(context);

            Assert.AreEqual(1, result);
            Assert.AreEqual(1, context.GetValue("One"));
        }
Exemplo n.º 11
0
        public void SetVariable()
        {
            ICommand         command     = new SetVariableCommand("foo", new ConstantExpression("bar"));
            ValueEnvironment environment = new ValueEnvironment();

            command.Execute(null, environment);

            Assert.AreEqual("bar", environment.GetValue("foo"));
        }
Exemplo n.º 12
0
        public void ExecuteSetVariableCommand()
        {
            BindingEnvironment environment = new BindingEnvironment();
            SetVariableCommand command     = new SetVariableCommand("foo", new ConstantExpression("bar"));

            command.Execute(environment);

            Assert.AreEqual("bar", environment.GetValue("foo"));
        }
        //OLD
        //public class SetSwitchCommand : EventCommand
        //{
        //    public override EventCommandType Type { get; } = EventCommandType.SetSwitch;
        //    public SwitchTypes SwitchType { get; set; } = SwitchTypes.PlayerSwitch;
        //    public Guid SwitchId { get; set; }
        //    public bool Value { get; set; }
        //    public bool SyncParty { get; set; }
        //}

        private static JObject ConvertSetSwitchCommand(JObject obj)
        {
            var cmd = new SetVariableCommand();

            if (obj.ContainsKey("SwitchId"))
            {
                cmd.VariableId = Guid.Parse(obj["SwitchId"].ToString());
            }

            if (obj.ContainsKey("SwitchType") && int.Parse(obj["SwitchType"].ToString()) == 1)
            {
                cmd.VariableType = VariableTypes.ServerVariable;
            }
            else
            {
                cmd.VariableType = VariableTypes.PlayerVariable;
            }

            if (obj.ContainsKey("SyncParty") && bool.Parse(obj["SyncParty"].ToString()))
            {
                cmd.SyncParty = true;
            }
            else
            {
                cmd.SyncParty = false;
            }

            var mod = new BooleanVariableMod();

            cmd.Modification = mod;

            if (obj.ContainsKey("Value") && bool.Parse(obj["Value"].ToString()))
            {
                mod.Value = true;
            }
            else
            {
                mod.Value = false;
            }

            var newJson = JsonConvert.SerializeObject(
                cmd, typeof(EventCommand),
                new JsonSerializerSettings()
            {
                Formatting             = Formatting.None,
                TypeNameHandling       = TypeNameHandling.Auto,
                DefaultValueHandling   = DefaultValueHandling.IgnoreAndPopulate,
                ObjectCreationHandling = ObjectCreationHandling.Replace
            }
                );

            return(JObject.Parse(newJson));
        }
Exemplo n.º 14
0
        public void ExecuteIfCommandWhenFalse()
        {
            IExpression condition  = new ConstantExpression(false);
            ICommand    setCommand = new SetVariableCommand("x", new ConstantExpression(1));
            IfCommand   command    = new IfCommand(condition, setCommand);

            BindingEnvironment environment = new BindingEnvironment();

            command.Execute(environment);

            Assert.IsNull(environment.GetValue("x"));
        }
Exemplo n.º 15
0
        public void ExecuteIfCommandWhenFalse()
        {
            IExpression condition  = new ConstantExpression(false);
            ICommand    setCommand = new SetVariableCommand("a", new ConstantExpression(1));
            IfCommand   command    = new IfCommand(condition, setCommand);

            Context context = new Context();

            command.Execute(context);

            Assert.AreEqual(Undefined.Instance, context.GetValue("a"));
        }
Exemplo n.º 16
0
        public async void SetsVariableWithMath()
        {
            _engine      = new AutomationEngineInstance(null);
            _setVariable = new SetVariableCommand();

            VariableMethods.CreateTestVariable("1", _engine, "testValue", typeof(string));
            VariableMethods.CreateTestVariable(null, _engine, "setVariable", typeof(string));

            _setVariable.v_Input = "{testValue}+1";
            _setVariable.v_OutputUserVariableName = "{setVariable}";

            _setVariable.RunCommand(_engine);

            Assert.Equal("2", (string)await "{setVariable}".EvaluateCode(_engine));
        }
Exemplo n.º 17
0
        public void SetsVariable()
        {
            _engine      = new AutomationEngineInstance(null);
            _setVariable = new SetVariableCommand();

            VariableMethods.CreateTestVariable("valueToSet", _engine, "testValue", typeof(string));
            VariableMethods.CreateTestVariable(null, _engine, "setVariable", typeof(string));

            _setVariable.v_Input = "{testValue}";
            _setVariable.v_OutputUserVariableName = "{setVariable}";

            _setVariable.RunCommand(_engine);

            Assert.Equal("valueToSet", "{setVariable}".ConvertUserVariableToString(_engine));
        }
Exemplo n.º 18
0
        private static string GetVariableModText(SetVariableCommand command, BooleanVariableMod mod)
        {
            var varvalue = "";

            if (mod.DuplicateVariableId != Guid.Empty)
            {
                if (mod.DupVariableType == VariableTypes.PlayerVariable)
                {
                    varvalue = Strings.EventCommandList.dupplayervariable.ToString(
                        PlayerVariableBase.GetName(mod.DuplicateVariableId)
                        );
                }

                else if (mod.DupVariableType == VariableTypes.ServerVariable)
                {
                    varvalue = Strings.EventCommandList.dupglobalvariable.ToString(
                        ServerVariableBase.GetName(mod.DuplicateVariableId)
                        );
                }
            }
            else
            {
                if (mod.Value == true)
                {
                    varvalue = Strings.EventCommandList.setvariable.ToString(Strings.EventCommandList.True);
                }
                else
                {
                    varvalue = Strings.EventCommandList.setvariable.ToString(Strings.EventCommandList.False);
                }
            }

            if (command.VariableType == VariableTypes.PlayerVariable)
            {
                return(Strings.EventCommandList.playervariable.ToString(
                           PlayerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            if (command.VariableType == VariableTypes.ServerVariable)
            {
                return(Strings.EventCommandList.globalvariable.ToString(
                           ServerVariableBase.GetName(command.VariableId), varvalue
                           ));
            }

            return(Strings.EventCommandList.invalid);
        }
Exemplo n.º 19
0
        public void ForWithAddExpression()
        {
            var command    = new SetVariableCommand("a", new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("k"), new VariableExpression("a")));
            var forcommand = new ForCommand("k", new ConstantExpression(new int[] { 1, 2, 3, 4 }), command);

            Context context = new Context();

            var result = forcommand.Execute(context);

            Assert.IsNull(result);
            Assert.AreEqual("k", forcommand.VariableName);
            Assert.IsNotNull(forcommand.Expression);
            Assert.IsNotNull(forcommand.Command);
            Assert.AreEqual(4, context.GetValue("k"));
            Assert.AreEqual(10, context.GetValue("a"));
        }
Exemplo n.º 20
0
        public void ExecuteForEachCommand()
        {
            IExpression addToX = new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("b"), new VariableExpression("a"));
            ICommand    setX   = new SetVariableCommand("a", addToX);
            IExpression values = new ConstantExpression(new int [] { 1, 2, 3 });

            ForEachCommand foreachcmd = new ForEachCommand("b", values, setX);

            Context context = new Context();

            context.SetValue("a", 0);

            foreachcmd.Execute(context);

            Assert.AreEqual(6, context.GetValue("a"));
        }
Exemplo n.º 21
0
        public void ExecuteForEachCommand()
        {
            IExpression addToX = new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("y"), new VariableExpression("x"));
            ICommand    setX   = new SetVariableCommand("x", addToX);
            IExpression values = new ConstantExpression(new int [] { 1, 2, 3 });

            ForEachCommand foreachcmd = new ForEachCommand("y", values, setX);

            BindingEnvironment environment = new BindingEnvironment();

            environment.SetValue("x", 0);

            foreachcmd.Execute(environment);

            Assert.AreEqual(6, environment.GetValue("x"));
        }
Exemplo n.º 22
0
        public void CreateAndExecuteForCommand()
        {
            var command    = new SetVariableCommand("a", new VariableExpression("k"));
            var forcommand = new ForCommand("k", new ConstantExpression((new int[] { 1, 2, 3 })), command);

            Context context = new Context();

            context.SetValue("a", 0);

            var result = forcommand.Execute(context);

            Assert.IsNull(result);
            Assert.AreEqual("k", forcommand.VariableName);
            Assert.IsNotNull(forcommand.Expression);
            Assert.IsNotNull(forcommand.Command);
            Assert.AreEqual(3, context.GetValue("k"));
            Assert.AreEqual(3, context.GetValue("a"));
        }
Exemplo n.º 23
0
        public void WhileWithAddExpression()
        {
            var expression   = new CompareExpression(ComparisonOperator.Less, new VariableExpression("a"), new ConstantExpression(10));
            var inccommand   = new SetVariableCommand("k", new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("k"), new ConstantExpression(1)));
            var addcommand   = new SetVariableCommand("a", new ArithmeticBinaryExpression(ArithmeticOperator.Add, new VariableExpression("k"), new VariableExpression("a")));
            var command      = new CompositeCommand(new ICommand[] { inccommand, addcommand });
            var whilecommand = new WhileCommand(expression, command);

            Context context = new Context();

            context.SetValue("a", 0);
            context.SetValue("k", 0);

            var result = whilecommand.Execute(context);

            Assert.IsNull(result);
            Assert.IsNotNull(whilecommand.Condition);
            Assert.IsNotNull(whilecommand.Command);
            Assert.AreEqual(4, context.GetValue("k"));
            Assert.AreEqual(10, context.GetValue("a"));
        }
Exemplo n.º 24
0
        public void IfFalseThen()
        {
            var condition   = new CompareExpression(ComparisonOperator.Less, new VariableExpression("a"), new ConstantExpression(10));
            var thencommand = new SetVariableCommand("k", new ConstantExpression(1));

            var ifcommand = new IfCommand(condition, thencommand);

            Context context = new Context();

            context.SetValue("a", 10);
            context.SetValue("k", 0);

            var result = ifcommand.Execute(context);

            Assert.IsNull(result);
            Assert.IsNotNull(ifcommand.Condition);
            Assert.IsNotNull(ifcommand.ThenCommand);
            Assert.IsNull(ifcommand.ElseCommand);

            Assert.AreEqual(0, context.GetValue("k"));
        }
Exemplo n.º 25
0
        public void ExecuteCompositeCommand()
        {
            Context context = new Context();

            SetVariableCommand command1 = new SetVariableCommand("a", new ConstantExpression("bar"));
            SetVariableCommand command2 = new SetVariableCommand("b", new ConstantExpression(1));
            SetVariableCommand command3 = new SetVariableCommand("c", new VariableExpression("a"));

            List <ICommand> commands = new List <ICommand>();

            commands.Add(command1);
            commands.Add(command2);
            commands.Add(command3);

            CompositeCommand command = new CompositeCommand(commands);

            command.Execute(context);

            Assert.AreEqual("bar", context.GetValue("a"));
            Assert.AreEqual(1, context.GetValue("b"));
            Assert.AreEqual("bar", context.GetValue("c"));
        }
Exemplo n.º 26
0
        public void ParseTwoCommands()
        {
            Parser           parser   = new Parser("a=1;\r\nb=1;");
            IList <ICommand> commands = parser.ParseCommands();

            Assert.IsNotNull(commands);
            Assert.AreEqual(2, commands.Count);

            ICommand command = commands[0];

            Assert.IsNotNull(command);
            Assert.That(command is SetVariableCommand);

            SetVariableCommand scommand = (SetVariableCommand)command;

            Assert.AreEqual("a", scommand.Name);
            Assert.That(scommand.Expression is ConstantExpression);

            ConstantExpression cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            command = commands[1];

            Assert.IsNotNull(command);
            Assert.That(command is SetVariableCommand);

            scommand = (SetVariableCommand)command;

            Assert.AreEqual("b", scommand.Name);
            Assert.That(scommand.Expression is ConstantExpression);

            cexpr = (ConstantExpression)scommand.Expression;

            Assert.AreEqual(1, cexpr.Value);

            Assert.IsNull(parser.ParseCommand());
        }
Exemplo n.º 27
0
        public void ParseNewVariableDefinitionAndInitialization()
        {
            ICommand command = ParseCommand("var x = 1;");

            Assert.IsNotNull(command);
            Assert.IsInstanceOfType(command, typeof(CompositeCommand));

            CompositeCommand composite = (CompositeCommand)command;

            Assert.AreEqual(2, composite.CommandCount);
            Assert.IsInstanceOfType(composite.Commands.First(), typeof(VarCommand));
            VarCommand varcmd = (VarCommand)composite.Commands.First();

            Assert.AreEqual("x", varcmd.Name);
            Assert.IsInstanceOfType(composite.Commands.ElementAt(1), typeof(SetVariableCommand));
            SetVariableCommand setcmd = (SetVariableCommand)composite.Commands.ElementAt(1);

            Assert.IsInstanceOfType(setcmd.Expression, typeof(ConstantExpression));

            ConstantExpression consexpr = (ConstantExpression)setcmd.Expression;

            Assert.AreEqual(1, consexpr.Value);
        }
Exemplo n.º 28
0
        bool HandleCommand(Plugin plugin,
                           Sequence sequence,
                           XmlNode commandNode,
                           ref string errorString)
        {
            string sCommandName = commandNode.Name;

            string  sCommandDestination;
            XmlNode commandSource1;
            string  sCommandSource1;
            bool    bIsCommandSource1Variable;
            XmlNode commandSource2;
            string  sCommandSource2;
            bool    bIsCommandSource2Variable;

            switch (sCommandName)
            {
            case "CatenateString":
                sCommandDestination = commandNode.SelectSingleNode("Destination").InnerText;
                if (plugin.GetVariable(sCommandDestination) == null)
                {
                    errorString = "Invalid Catenate String Destination";
                    return(false);
                }

                commandSource1 = commandNode.SelectSingleNode("Source1");
                if (commandSource1.HasChildNodes && commandSource1.ChildNodes[0].NodeType != XmlNodeType.Text)
                {
                    sCommandSource1           = commandSource1.ChildNodes[0].InnerText;
                    bIsCommandSource1Variable = true;
                    if (plugin.GetVariable(sCommandSource1) == null)
                    {
                        errorString = "Invalid Catenate String Source1";
                        return(false);
                    }
                }
                else
                {
                    sCommandSource1           = commandSource1.InnerText;
                    bIsCommandSource1Variable = false;
                }

                commandSource2 = commandNode.SelectSingleNode("Source2");
                if (commandSource2.HasChildNodes && commandSource2.ChildNodes[0].NodeType != XmlNodeType.Text)
                {
                    sCommandSource2           = commandSource2.ChildNodes[0].InnerText;
                    bIsCommandSource2Variable = true;
                    if (plugin.GetVariable(sCommandSource2) == null)
                    {
                        errorString = "Invalid Catenate String Source2";
                        return(false);
                    }
                }
                else
                {
                    sCommandSource2           = commandSource2.InnerText;
                    bIsCommandSource2Variable = false;
                }

                CatenateStringCommand catenateCommand = new CatenateStringCommand(sCommandDestination,
                                                                                  sCommandSource1,
                                                                                  bIsCommandSource1Variable,
                                                                                  sCommandSource2,
                                                                                  bIsCommandSource2Variable);
                sequence.AddCommand(catenateCommand);
                break;

            case "Click":
                sCommandDestination = commandNode.SelectSingleNode("Destination").InnerText;
                ClickElementWebDriverCommand clickCommand = new ClickElementWebDriverCommand(sCommandDestination);
                sequence.AddCommand(clickCommand);
                break;

            case "GetItem":
                string sGetItemName          = commandNode.Attributes["name"].Value.ToLower();
                string sGetItemParentElement = commandNode.SelectSingleNode("ParentElement").InnerText.ToLower();
                string sGetItemSearchType    = commandNode.SelectSingleNode("SearchType").InnerText.ToLower();
                string sGetItemSearchValue   = commandNode.SelectSingleNode("SearchValue").InnerText;

                if (sGetItemName == "" || sGetItemSearchType == "" || sGetItemSearchValue == "")
                {
                    errorString = "Invalid Get Item name \"" + sGetItemName;
                    return(false);
                }

                if (sGetItemParentElement != "" && plugin.GetWebElement(sGetItemParentElement) == null)
                {
                    errorString = "Invalid Get Item parent element";
                    return(false);
                }

                if (sGetItemSearchType == "id")
                {
                    GetElementByIdWebDriverCommand getItemByID = new GetElementByIdWebDriverCommand(sGetItemParentElement,
                                                                                                    sGetItemName,
                                                                                                    sGetItemSearchValue);
                    sequence.AddCommand(getItemByID);
                }
                else if (sGetItemSearchType == "xpath")
                {
                    GetElementByXPathWebDriverCommand getItemByXPath = new GetElementByXPathWebDriverCommand(sGetItemParentElement,
                                                                                                             sGetItemName,
                                                                                                             sGetItemSearchValue);
                    sequence.AddCommand(getItemByXPath);
                }
                break;

            case "GoBack":
                GoBackWebDriverCommand goBackCommand = new GoBackWebDriverCommand();
                sequence.AddCommand(goBackCommand);
                break;

            case "GoTo":
                string sGoToDestination;
                bool   bGoToDestIsVariable;
                if (commandNode.HasChildNodes && commandNode.ChildNodes[0].NodeType != XmlNodeType.Text)
                {
                    sGoToDestination    = commandNode.ChildNodes[0].InnerText.ToLower();
                    bGoToDestIsVariable = true;
                    if (plugin.GetVariable(sGoToDestination) == null)
                    {
                        errorString = "Invalid GoTo Destination";
                        return(false);
                    }
                }
                else
                {
                    sGoToDestination    = commandNode.InnerText;
                    bGoToDestIsVariable = false;
                }
                GoToWebDriverCommand goToCommand = new GoToWebDriverCommand(sGoToDestination, bGoToDestIsVariable);
                sequence.AddCommand(goToCommand);
                break;

            case "Refresh":
                RefreshWebDriverCommand refreshCommand = new RefreshWebDriverCommand();
                sequence.AddCommand(refreshCommand);
                break;

            case "Type":
                sCommandDestination = commandNode.SelectSingleNode("Destination").InnerText.ToLower();

                string sTypeValue;
                bool   bTypeIsVariable;
                if (commandNode.HasChildNodes && commandNode.ChildNodes[0].NodeType != XmlNodeType.Text)
                {
                    sTypeValue      = commandNode.SelectSingleNode("String").ChildNodes[0].InnerText.ToLower();
                    bTypeIsVariable = true;
                    if (plugin.GetVariable(sTypeValue) == null)
                    {
                        errorString = "Invalid Type Command Variable";
                        return(false);
                    }
                }
                else
                {
                    sTypeValue      = commandNode.InnerText;
                    bTypeIsVariable = false;
                }
                TypeElementWebDriverCommand typeCommand = new TypeElementWebDriverCommand(sCommandDestination, sTypeValue, bTypeIsVariable);
                sequence.AddCommand(typeCommand);
                break;

            case "Sleep":
                int          dwSleepTime  = Int32.Parse(commandNode.InnerText);
                SleepCommand sleepCommand = new SleepCommand(dwSleepTime);
                sequence.AddCommand(sleepCommand);
                break;

            case "SetVariable":
                string             sSetVariableName   = commandNode.SelectSingleNode("Destination").InnerText;
                string             sSetVariableValue  = commandNode.SelectSingleNode("String").InnerText;
                SetVariableCommand setVariableCommand = new SetVariableCommand(sSetVariableName, sSetVariableValue);
                sequence.AddCommand(setVariableCommand);
                break;

            case "IncreaseVariable":
                string sIncreaseVariableName   = commandNode.SelectSingleNode("Destination").InnerText;
                int    dwIncreaseVariableValue = Int32.Parse(commandNode.SelectSingleNode("String").InnerText);
                IncreaseVariableCommand increaseVariableCommand = new IncreaseVariableCommand(sIncreaseVariableName, dwIncreaseVariableValue);
                sequence.AddCommand(increaseVariableCommand);
                break;

            default:
                errorString = "Invalid command " + sCommandName + " in sequence " + sequenceName;
                return(false);
            }
        }
Exemplo n.º 29
0
        private void ParseCommand(string line)
        {
            if (string.IsNullOrEmpty(line))
            {
                return;
            }
            //NOTE: Parse in ascending length order!
            if (line.Substring(0, 1).Equals("#"))
            {
                return;
            }
            if (line.Length < 4)
            {
                Warn("invalid command: {0}", line);
                return;
            }

            if (line.Substring(0, 4).ToLower().Equals("quit") || line.Substring(0, 4).ToLower().Equals("exit"))
            {
                return;
            }

            var    idx = line.IndexOf(' ');
            string cmd;

            if (idx < 0)
            {
                idx = 0;
                cmd = line;
            }
            else
            {
                cmd = line.Substring(0, idx).ToLower();
            }

            var args = idx == 0 ? string.Empty : line.Substring(idx + 1).Trim();

            if (CR.abort.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AbortCommand();
                c.Execute(context);
                StopTimer(CR.abort + " " + args);
                return;
            }
            if (CR.addalias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AddAliasCommand();
                c.Execute(context, args);
                StopTimer(CR.addalias + " " + args);
                return;
            }
            if (CR.addindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new AddIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.addindex + " " + args);
                return;
            }
            if (CR.close.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CloseCommand();
                c.Execute(context, args);
                StopTimer(CR.close + " " + args);
                return;
            }
            if (CR.commit.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CommitCommand();
                c.Execute(context, args);
                StopTimer(CR.commit + " " + args);
                return;
            }
            if (CR.compactcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CompactContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.compactcontainer + " " + args);
                return;
            }
            if (CR.contextquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ContextQueryCommand();
                c.Execute(context, args);
                StopTimer(CR.contextquery + " " + args);
                return;
            }
            if (CR.cquery.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CQueryCommand();
                c.Execute(context, args);
                StopTimer(CR.cquery + " " + args);
                return;
            }
            if (CR.createcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new CreateContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.createcontainer + " " + args);
                return;
            }
            if (CR.delindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new DeleteIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.delindex + " " + args);
                return;
            }
            if (CR.echo.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                Msg(args);
                return;
            }
            if (CR.getdocuments.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new GetDocumentsCommand();
                c.Execute(context, args);
                StopTimer(CR.getdocuments + " " + args);
                return;
            }
            if (CR.getmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new GetMetadataCommand();
                c.Execute(context, args);
                StopTimer(CR.getmetadata + " " + args);
                return;
            }
            if (CR.help.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new HelpCommand();
                c.Execute(args);
                return;
            }
            if (CR.info.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new InfoCommand();
                c.Execute(context, args);
                StopTimer(CR.info + " " + args);
                return;
            }
            if (CR.listindexes.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ListIndexesCommand();
                c.Execute(context, args);
                StopTimer(CR.listindexes + " " + args);
                return;
            }
            if (CR.lookupedgeindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupEdgeIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupedgeindex + " " + args);
                return;
            }
            if (CR.lookupindex.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupIndexCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupindex + " " + args);
                return;
            }
            if (CR.lookupstats.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new LookupStatisticsCommand();
                c.Execute(context, args);
                StopTimer(CR.lookupstats + " " + args);
                return;
            }
            if (CR.opencontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new OpenContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.opencontainer + " " + args);
                return;
            }
            if (CR.preload.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PreloadCommand();
                c.Execute(context, args);
                StopTimer(CR.preload + " " + args);
                return;
            }
            if (CR.prepare.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PrepareCommand();
                c.Execute(context, args);
                StopTimer(CR.prepare + " " + args);
                return;
            }
            if (CR.print.IndexOf(cmd, 0, StringComparison.Ordinal) == 0 || cmd.ToLower().Equals("printnames"))
            {
                StartTimer();
                var c = new PrintCommand();
                c.Execute(context, cmd.Equals("printnames") ? "printnames " + args : args);
                StopTimer(cmd.Equals("printnames") ? "printNames" : CR.print);
                return;
            }
            if (CR.putdocuments.Equals(cmd))
            {
                StartTimer();
                var c = new PutDocumentsCommand();
                c.Execute(context, args);
                StopTimer(CR.putdocuments + " " + args);
                return;
            }
            if (CR.putdocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new PutDocumentCommand();
                c.Execute(context, args);
                StopTimer(CR.putdocument + " " + args);
                return;
            }
            if (CR.query.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new QueryCommand();
                c.Execute(context, args);
                StopTimer(CR.query + " " + args);
                return;
            }
            if (CR.queryplan.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new QueryPlanCommand();
                c.Execute(context, args);
                StopTimer(CR.queryplan + " " + args);
                return;
            }
            if (CR.reindexcontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new ReindexContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.reindexcontainer + " " + args);
                return;
            }
            if (CR.removealias.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveAliasCommand();
                c.Execute(context, args);
                StopTimer(CR.removealias + " " + args);
                return;
            }
            if (CR.removecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.removecontainer + " " + args);
                return;
            }
            if (CR.removedocument.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new RemoveDocumentCommand();
                c.Execute(context, args);
                StopTimer(CR.removedocument + " " + args);
                return;
            }
            if (CR.run.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new RunCommand();
                c.Execute(context, args);
                var l2 = new List <string>(originalArgs)
                {
                    "-s", c.Script
                };
                StartTimer();
                Main(l2.ToArray());
                StopTimer(CR.run + " " + args);
                return;
            }
            if (CR.setautoindexing.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetAutoIndexingCommand();
                c.Execute(context, args);
                StopTimer(CR.setautoindexing + " " + args);
                return;
            }
            if (CR.setbaseuri.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetBaseUriCommand();
                c.Execute(context, args);
                StopTimer(CR.setbaseuri + " " + args);
                return;
            }
            if (CR.setignore.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                var c = new SetIgnoreCommand();
                c.Execute(context, args);
                ignoreErrors = c.Ignore;
                return;
            }
            if (CR.setlazy.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetLazyCommand();
                c.Execute(context, args);
                StopTimer(CR.setlazy + " " + args);
                return;
            }
            if (CR.setmetadata.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetMetadataCommand();
                c.Execute(context, args);
                StopTimer(CR.setmetadata + " " + args);
                return;
            }
            if (CR.setnamespace.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetNamespaceCommand();
                c.Execute(context, args);
                StopTimer(CR.setnamespace + " " + args);
                return;
            }
            if (CR.setprojection.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetProjectionCommand();
                c.Execute(context, args);
                StopTimer(CR.setprojection + " " + args);
                return;
            }
            if (CR.setquerytimeout.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetQueryTimeoutCommand();
                c.Execute(context, args);
                StopTimer(CR.setquerytimeout + " " + args);
                return;
            }
            if (CR.setvariable.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetVariableCommand();
                c.Execute(context, args);
                StopTimer(CR.setvariable + " " + args);
                return;
            }
            if (CR.setverbose.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new SetVerboseCommand();
                c.Execute(context, args);
                StopTimer(CR.setverbose + " " + args);
                return;
            }
            if (CR.sync.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                context.Sync();
                StopTimer(CR.sync + " " + args);
                return;
            }
            if (CR.time.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                time = true;
                ParseCommand(args);
                return;
            }
            if (CR.transaction.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new TransactionCommand();
                c.Execute(context, args);
                StopTimer(CR.transaction + " " + args);
                return;
            }
            if (CR.upgradecontainer.IndexOf(cmd, 0, StringComparison.Ordinal) == 0)
            {
                StartTimer();
                var c = new UpgradeContainerCommand();
                c.Execute(context, args);
                StopTimer(CR.upgradecontainer + " " + args);
                return;
            }

            Warn("Command not recognized: {0}", cmd);
        }
Exemplo n.º 30
0
        public ICommand ParseCommand()
        {
            Token token = this.NextToken();

            if (token == null)
            {
                return(null);
            }

            if (token.Type == TokenType.Separator)
            {
                if (token.Value == ";")
                {
                    return(NullCommand.Instance);
                }

                if (token.Value == "{")
                {
                    ICommand commands = new CompositeCommand(this.ParseCommands());
                    this.ParseToken("}", TokenType.Separator);
                    return(commands);
                }
            }

            if (token.Type == TokenType.Name)
            {
                if (token.Value == "if")
                {
                    return(this.ParseIfCommand());
                }

                if (token.Value == "while")
                {
                    return(this.ParseWhileCommand());
                }

                if (token.Value == "class")
                {
                    return(this.ParseDefineClassCommand());
                }

                if (token.Value == "return")
                {
                    var expr = this.ParseExpression();
                    this.ParseToken(";", TokenType.Separator);
                    return(new ReturnCommand(expr));
                }

                if (token.Value == "void")
                {
                    return(this.ParseDefineFunction(this.ParseName()));
                }

                if (token.Value == "main")
                {
                    return(this.ParseDefineFunction(token.Value));
                }
            }

            this.PushToken(token);

            IExpression expression = this.ParseExpression();

            if (expression == null)
            {
                return(null);
            }

            token = this.NextToken();

            if (token != null && token.Type == TokenType.Name && this.IsTypeExpression(expression))
            {
                if (this.TryPeekToken("(", TokenType.Separator))
                {
                    return(this.ParseDefineFunction(token.Value));
                }

                return(this.ParseDefineVariableCommand(expression, token.Value));
            }

            ICommand command = null;

            if (expression is VariableExpression && token.Type == TokenType.Operator && token.Value == "=")
            {
                string      name = ((VariableExpression)expression).Name;
                IExpression expr = this.ParseExpression();

                command = new SetVariableCommand(name, expr);

                token = this.NextToken();
            }
            else
            {
                command = new ExpressionCommand(expression);
            }

            if (token == null || token.Type != TokenType.Separator || token.Value != ";")
            {
                throw new ParserException("Expected ';'");
            }

            return(command);
        }