private void SerializeIf(VarCommand cmd) { switch (cmd.Op) { case VarCommand.Operator.ASSIGN: sb.AppendFormat("setvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.ADD: sb.AppendFormat("addvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.SUB: sb.AppendFormat("subvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.MUL: sb.AppendFormat("mulvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.DIV: sb.AppendFormat("divvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.SHIFT: sb.AppendFormat("shiftvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.EQU: sb.AppendFormat("cmp_eq_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.GT: sb.AppendFormat("cmp_gt_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.GTE: sb.AppendFormat("cmp_ge_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.LTE: sb.AppendFormat("cmp_le_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.LT: sb.AppendFormat("cmp_lt_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.NEQ: sb.AppendFormat("cmp_ne_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; case VarCommand.Operator.RAND: sb.AppendFormat("randvar_if {0}, {1}\n", cmd.Variable, cmd.Operand); break; default: throw new ArgumentOutOfRangeException(); } }
public void ParseNewVariableDefinition() { ICommand command = ParseCommand("var x;"); Assert.IsNotNull(command); Assert.IsInstanceOfType(command, typeof(VarCommand)); VarCommand varcmd = (VarCommand)command; Assert.AreEqual("x", varcmd.Name); }
public void ParseVarCommand() { ICommand command = ParseCommand("var x;"); Assert.IsNotNull(command); Assert.IsInstanceOfType(command, typeof(VarCommand)); VarCommand varcmd = (VarCommand)command; Assert.AreEqual("x", varcmd.Name); Assert.IsNull(varcmd.Expression); }
public void ParseVarCommandWithInitialValue() { ICommand command = ParseCommand("var x = 10;"); Assert.IsNotNull(command); Assert.IsInstanceOfType(command, typeof(VarCommand)); VarCommand varcmd = (VarCommand)command; Assert.AreEqual("x", varcmd.Name); Assert.IsNotNull(varcmd.Expression); Assert.IsInstanceOfType(varcmd.Expression, typeof(ConstantExpression)); }
public void ExecuteVarCommandWithNullExpression() { VarCommand command = new VarCommand("foo", null); IBindingEnvironment environment = new BindingEnvironment(); IBindingEnvironment local = new LocalBindingEnvironment(environment); IBindingEnvironment local2 = new LocalBindingEnvironment(local); command.Execute(local2); Assert.IsTrue(local2.ContainsName("foo")); Assert.IsFalse(local.ContainsName("foo")); Assert.IsFalse(environment.ContainsName("foo")); Assert.IsNull(local2.GetValue("foo")); }
public void ExecuteVarCommand() { VarCommand command = new VarCommand("foo", new ConstantExpression(10)); IBindingEnvironment environment = new BindingEnvironment(); IBindingEnvironment local = new LocalBindingEnvironment(environment); IBindingEnvironment local2 = new LocalBindingEnvironment(local); command.Execute(local2); Assert.IsTrue(local2.ContainsName("foo")); Assert.IsFalse(local.ContainsName("foo")); Assert.IsFalse(environment.ContainsName("foo")); Assert.AreEqual(10, local2.GetValue("foo")); }
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); }
public void DashVar(string op1, string opm, string op2) { IHalationCommand cmd = new VarCommand(Halation.CurrentSelectedLine, this.GetIndent(Halation.CurrentSelectedLine), Halation.currentCodePackage, op1, opm, op2); HalationInvoker.Dash(Halation.currentScriptName, cmd); }