public void VariableReassignmentTest() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("a = 1"); scriptBuilder.AppendLine("bcd = 200"); scriptBuilder.AppendLine("a = 100"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); Assert.AreEqual(2, interpreter.Variables.Count); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(100, variableValue.NumericValue); variableValue = interpreter.Variables["bcd"]; Assert.AreEqual(200, variableValue.NumericValue); }
public void IfElseStatementTrue() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("b = 15"); scriptBuilder.AppendLine("if b > 10 do"); scriptBuilder.AppendLine(" b = 20"); scriptBuilder.AppendLine(" b = b * 2"); scriptBuilder.AppendLine("else do"); scriptBuilder.AppendLine(" b = 10"); scriptBuilder.AppendLine("end"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["b"]; Assert.AreEqual(40.0, variableValue.NumericValue); }
public TurtleScriptValue Square(List <TurtleScriptValue> parameters) { if (parameters.Count == 1) { double value = parameters[0].NumericValue; TurtleScriptValue returnValue = new TurtleScriptValue(value * value); return(returnValue); } return(TurtleScriptValue.VOID); }
public TurtleScriptValue Sum(List <TurtleScriptValue> parameters) { if (parameters.Count == 3) { double value1 = parameters[0].NumericValue; double value2 = parameters[1].NumericValue; double value3 = parameters[2].NumericValue; TurtleScriptValue returnValue = new TurtleScriptValue(value1 + value2 + value3); return(returnValue); } return(TurtleScriptValue.VOID); }
public void SimpleMultiplication() { // Arrange var script = "a = 5 * 6"; TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(script); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(30, variableValue.NumericValue); }
public void DivisionFirstThenMultiplication() { // Arrange var script = "a = 100 / 2 * 10"; TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(script); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(500, variableValue.NumericValue); }
public void ComplexSubtraction() { // Arrange var script = "a = 10 - 2 - 4"; TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(script); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(4, variableValue.NumericValue); }
public void DivideByZero() { // Arrange var script = "a = 5 / 0"; TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(script); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(0, variableValue.NumericValue); }
public void AssignmentAndReferenceInExpression() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("a = 1"); scriptBuilder.AppendLine("b = a + 500"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["b"]; Assert.AreEqual(501, variableValue.NumericValue); }
public void AssignmentAndSelfReassignment() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("a = 12345"); scriptBuilder.AppendLine("a = a"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(12345, variableValue.NumericValue); }
public void FunctionDeclarationAfterCall() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("MyFunc()"); scriptBuilder.AppendLine("def MyFunc()"); scriptBuilder.AppendLine(" b = 15"); scriptBuilder.AppendLine("end"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["b"]; Assert.AreEqual(15.0, variableValue.NumericValue); }
public void FunctionDeclarationAndCallThreeParameters() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("def MyFunc(value1, value2, value3)"); scriptBuilder.AppendLine(" b = value1 + value2 - value3"); scriptBuilder.AppendLine("end"); scriptBuilder.AppendLine("MyFunc(100, 200, 50)"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["b"]; Assert.AreEqual(250, variableValue.NumericValue); }
public void ThreeParameters() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("a = test.sum(2, 4, 6)"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString(), new List <ITurtleScriptRuntime>() { new SampleRuntime() }); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["a"]; Assert.AreEqual(12, variableValue.NumericValue); }
public void Reverse() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("b = 0"); scriptBuilder.AppendLine("for a = 5 to 1 do"); scriptBuilder.AppendLine("b = b + a"); scriptBuilder.AppendLine("end"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["b"]; Assert.AreEqual(15, variableValue.NumericValue); }
public void SimpleAssignmentTest() { // Arrange var script = "a = 1"; TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(script); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); Assert.AreEqual(1, interpreter.Variables.Count); string variableName = interpreter.Variables.Keys.First(); TurtleScriptValue variableValue = interpreter.Variables[variableName]; Assert.AreEqual("a", variableName); Assert.AreEqual(1, variableValue.NumericValue); }
public void FunctionDeclarationAndCallOneParameter() { // Arrange StringBuilder scriptBuilder = new StringBuilder(); scriptBuilder.AppendLine("def MyFunc(myparameter)"); scriptBuilder.AppendLine(" b = myparameter"); scriptBuilder.AppendLine(" myparameter = b * 2"); scriptBuilder.AppendLine("end"); scriptBuilder.AppendLine("MyFunc(10)"); TurtleScriptInterpreter interpreter = new TurtleScriptInterpreter(scriptBuilder.ToString()); // Act bool success = interpreter.Execute(); // Assert Assert.IsTrue(success, interpreter.ErrorMessage); TurtleScriptValue variableValue = interpreter.Variables["myparameter"]; Assert.AreEqual(20, variableValue.NumericValue); }
public TurtleScriptValue CurrentAngle(List <TurtleScriptValue> parameters) { TurtleScriptValue returnValue = new TurtleScriptValue(Turtle.Angle); return(returnValue); }