public void ManagerConverter_SetUsingStatements() { string script = "// Comment 1" + Environment.NewLine + "// Comment 2" + Environment.NewLine + Environment.NewLine + "using System" + Environment.NewLine + Environment.NewLine + "using Models.Soils;" + Environment.NewLine + "using APSIM.Shared.Utilities;" + Environment.NewLine + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + "}" + Environment.NewLine; ManagerConverter converter = new ManagerConverter(); converter.Read(script); converter.SetUsingStatements(new string[] { "System" }); Assert.AreEqual(converter.ToString(), "// Comment 1" + Environment.NewLine + "// Comment 2" + Environment.NewLine + Environment.NewLine + "using System;" + Environment.NewLine + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + "}" + Environment.NewLine); }
public void ManagerConverter_FindMethodCalls() { string script = "using System" + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + " public class Script : Model" + Environment.NewLine + " {" + Environment.NewLine + " [Link] SoluteManager mySolutes1;" + Environment.NewLine + " [Link] " + " SoluteManager mySolutes2;" + Environment.NewLine + " Fertiliser fert;" + Environment.NewLine + " private void OnSimulationCommencing(object sender, EventArgs e)" + Environment.NewLine + " {" + Environment.NewLine + " mySolutes1.Add(arg1, arg2);" + Environment.NewLine + " mySolutes2.Add (arg3,arg4);" + Environment.NewLine + " fake.Add (arg3,arg4);" + Environment.NewLine + " fert.Add (arg3,arg4);" + Environment.NewLine + " }" + Environment.NewLine + " }" + Environment.NewLine + "}" + Environment.NewLine; ManagerConverter converter = new ManagerConverter(); converter.Read(script); List <MethodCall> methods = converter.FindMethodCalls("SoluteManager", "Add"); Assert.AreEqual(methods.Count, 2); Assert.AreEqual(methods[0].InstanceName, "mySolutes1"); Assert.AreEqual(methods[0].MethodName, "Add"); Assert.AreEqual(methods[0].Arguments, new string[] { "arg1", "arg2" }); Assert.AreEqual(methods[1].InstanceName, "mySolutes2"); Assert.AreEqual(methods[1].MethodName, "Add"); Assert.AreEqual(methods[1].Arguments, new string[] { "arg3", "arg4" }); }
public void ManagerConverter_FindDeclaration() { string script = "using System" + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + " public class Script : Model" + Environment.NewLine + " {" + Environment.NewLine + " [Link] SoluteManager mySolutes1;" + Environment.NewLine + " [Link] " + Environment.NewLine + " [Units(0-1)] " + Environment.NewLine + " Fertiliser fert;" + Environment.NewLine + " [ChildLinkByName] " + Environment.NewLine + " Soil mySoil;" + Environment.NewLine + " }" + Environment.NewLine + "}" + Environment.NewLine; ManagerConverter converter = new ManagerConverter(); converter.Read(script); Declaration declaration1 = converter.FindDeclaration("mySolutes1"); Assert.AreEqual(declaration1.LineIndex, 5); Assert.AreEqual(declaration1.InstanceName, "mySolutes1"); Assert.AreEqual(declaration1.TypeName, "SoluteManager"); Assert.AreEqual(declaration1.Attributes[0], "[Link]"); Declaration declaration2 = converter.FindDeclaration("fert"); Assert.AreEqual(declaration2.LineIndex, 8); Assert.AreEqual(declaration2.InstanceName, "fert"); Assert.AreEqual(declaration2.TypeName, "Fertiliser"); Assert.IsTrue(declaration2.Attributes.Contains("[Link]")); Assert.IsTrue(declaration2.Attributes.Contains("[Units(0-1)]")); Declaration declaration3 = converter.FindDeclaration("mySoil"); Assert.AreEqual(declaration3.LineIndex, 10); Assert.AreEqual(declaration3.InstanceName, "mySoil"); Assert.AreEqual(declaration3.TypeName, "Soil"); Assert.AreEqual(declaration3.Attributes[0], "[ChildLinkByName]"); }
public void ManagerConverter_SetMethodCall() { string script = "using System" + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + " public class Script : Model" + Environment.NewLine + " {" + Environment.NewLine + " [Link] SoluteManager mySolutes1;" + Environment.NewLine + " private void OnSimulationCommencing(object sender, EventArgs e)" + Environment.NewLine + " {" + Environment.NewLine + " mySolutes1.Add(arg1, arg2);" + Environment.NewLine + " }" + Environment.NewLine + " }" + Environment.NewLine + "}" + Environment.NewLine; ManagerConverter converter = new ManagerConverter(); converter.Read(script); MethodCall method = new MethodCall(); method.LineIndex = 8; method.InstanceName = "mySolutes1"; method.MethodName = "Add2"; method.Arguments = new List <string>(); method.Arguments.Add("10"); converter.SetMethodCall(method); // Make sure we can't find old one. Assert.AreEqual(converter.FindMethodCalls("SoluteManager", "Add").Count, 0); // Make sure we find new one. var foundMethod = converter.FindMethodCalls("SoluteManager", "Add2")[0]; Assert.AreEqual(foundMethod.LineIndex, 8); Assert.AreEqual(foundMethod.InstanceName, "mySolutes1"); Assert.AreEqual(foundMethod.MethodName, "Add2"); Assert.AreEqual(foundMethod.Arguments, new string[] { "10" }); }
public void ManagerConverter_Declarations() { string script = "using System" + Environment.NewLine + "namespace Models" + Environment.NewLine + "{" + Environment.NewLine + " public class Script : Model" + Environment.NewLine + " {" + Environment.NewLine + " [Link] SoluteManager mySolutes1;" + Environment.NewLine + " [Link] " + Environment.NewLine + " [Units(0-1)] " + Environment.NewLine + " Fertiliser fert;" + Environment.NewLine + " [Link(Type = LinkType.Descendant, ByName = true)] " + Environment.NewLine + " Soil mySoil;" + Environment.NewLine + " }" + Environment.NewLine + "}" + Environment.NewLine; ManagerConverter converter = new ManagerConverter(); converter.Read(script); var declarations = converter.GetDeclarations(); Assert.AreEqual(declarations[0].LineIndex, 5); Assert.AreEqual(declarations[0].InstanceName, "mySolutes1"); Assert.AreEqual(declarations[0].TypeName, "SoluteManager"); Assert.AreEqual(declarations[0].Attributes[0], "[Link]"); Assert.AreEqual(declarations[1].LineIndex, 8); Assert.AreEqual(declarations[1].InstanceName, "fert"); Assert.AreEqual(declarations[1].TypeName, "Fertiliser"); Assert.IsTrue(declarations[1].Attributes.Contains("[Link]")); Assert.IsTrue(declarations[1].Attributes.Contains("[Units(0-1)]")); Assert.AreEqual(declarations[2].LineIndex, 10); Assert.AreEqual(declarations[2].InstanceName, "mySoil"); Assert.AreEqual(declarations[2].TypeName, "Soil"); Assert.AreEqual(declarations[2].Attributes[0], "[Link(Type = LinkType.Descendant, ByName = true)]"); }