diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/UpdateVariable.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/UpdateVariable.cs index 66973a8..4be2d6a 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/UpdateVariable.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/Value/UpdateVariable.cs @@ -1,24 +1,21 @@ -namespace Advanced_Software_Engineering.Verbs.Value { +using System; + +namespace Advanced_Software_Engineering.Verbs.Value { public class UpdateVariable : IVerb { protected Drawer drawer; protected string name; - protected string value; + protected IValue value; - public UpdateVariable(Drawer drawer, string name, string value) { + public UpdateVariable(Drawer drawer, string name, IValue value) { this.name = name; this.value = value; this.drawer = drawer; } - public UpdateVariable(Drawer drawer, string name, IValue value) { - - } - public void ExecuteVerb() { - IValue variable = drawer.GetVariable(name); - string type = variable.GetOriginalType(); - drawer.SetVariable(name, ValueFactory.CreateValue(value, type)); + if (!drawer.CheckVariableExists(name)) throw new Exception("Cannot update variable because it is not declared"); + drawer.SetVariable(name, value); } public string GetDescription() { diff --git a/Advanced Software Engineering/Advanced Software Engineering/Verbs/VerbFactory.cs b/Advanced Software Engineering/Advanced Software Engineering/Verbs/VerbFactory.cs index 3bf2ddc..dc2c2d9 100644 --- a/Advanced Software Engineering/Advanced Software Engineering/Verbs/VerbFactory.cs +++ b/Advanced Software Engineering/Advanced Software Engineering/Verbs/VerbFactory.cs @@ -41,7 +41,16 @@ namespace Advanced_Software_Engineering { if (commandAndParameters["parameters"].Length == 1) { return new DeclareVariable(drawer, command, commandAndParameters["parameters"][0]); } else throw new Exception(command + "s need to be initialised"); - } + + default: + //assignment + if (command.Contains("=") && !command.Contains("==")) { + string[] assignmentCommands = command.Split("="[0]); + if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments"); + return new UpdateVariable(drawer, assignmentCommands[0], ValueFactory.CreateValue(drawer, assignmentCommands[1])); + } + break; + } List parameters = new List(); @@ -178,15 +187,8 @@ namespace Advanced_Software_Engineering { } else throw new Exception(command + " has an incorrect number of parameters"); - default: - //assignment - if (command.Contains("=") && !command.Contains("==")) { - string[] assignmentCommands = command.Split("="[0]); - if (assignmentCommands.Length > 2) throw new Exception("Cannot have two assignments"); - return new UpdateVariable(drawer, assignmentCommands[0], assignmentCommands[1]); - } - //not assignment + throw new Exception("Unknown command or cannot parse"); } }