public void ErrorHandling_ContinueOnFail() { // With title and expect is passing var f = new StringBuilder(); f.AppendLine("bool MyProcedure() : ContinueOnFail"); f.AppendLine("{"); f.AppendLine(" expect (4 < 10);"); f.AppendLine(" expect (7 < 10);"); f.AppendLine(" expect (10 < 10);"); f.AppendLine(" expect (9 < 10);"); f.AppendLine(" return true;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(true, (bool)result); var log = new LogInspector(taskContext.Logger); log.DebugDump(); log.ExpectNext("0 - Pre - TestRun - Starting"); log.ExpectNext("1 - Pre - MyProcedure - <arguments>"); log.ExpectNext("2 - Normal - 3 - EXPECT: 4<10; Actual: <TRUE> => Pass"); log.ExpectNext("2 - Normal - 4 - EXPECT: 7<10; Actual: <TRUE> => Pass"); log.ExpectNext("2 - Error - 5 - EXPECT: 10<10; Actual: <FALSE> => Fail"); log.ExpectNext("2 - Normal - 6 - EXPECT: 9<10; Actual: <TRUE> => Pass"); log.ExpectNext("2 - Post"); }
internal IFileProcedure CreateTestFile(string procedureName) { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("procedure void Anders()"); f.AppendLine("{"); f.AppendLine(" step 1;"); f.AppendLine(" step 2;"); f.AppendLine(" step 3;"); f.AppendLine("}"); f.AppendLine("procedure void Bent()"); f.AppendLine("{"); f.AppendLine(" step \"First\";"); f.AppendLine(" step \"Second\";"); f.AppendLine(" step \"Third\";"); f.AppendLine("}"); f.AppendLine("procedure void Christian()"); f.AppendLine("{"); f.AppendLine(" step 1, \"First\";"); f.AppendLine(" step 2, \"Second\";"); f.AppendLine(" step 3, \"Third\";"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(3, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == procedureName) as IFileProcedure; Assert.AreEqual(procedureName, procedure.Name); return(procedure); }
public void ErrorHandling_SubProcedure_Pass() { // With title and expect is passing var f = new StringBuilder(); f.AppendLine("bool MySub()"); f.AppendLine("{"); f.AppendLine(" log (\"ResultB1: \" + this.Result.Verdict);"); f.AppendLine(" log (\"ResultB1.HasFails: \" + this.HasFails);"); f.AppendLine(" log (\"ResultB1.HasErrors: \" + this.HasErrors);"); f.AppendLine(" expect (4 < 10);"); f.AppendLine(" log (\"ResultB2: \" + this.Result.Verdict);"); f.AppendLine(" log (\"ResultB2.HasFails: \" + this.HasFails);"); f.AppendLine(" log (\"ResultB2.HasErrors: \" + this.HasErrors);"); f.AppendLine(" return true;"); f.AppendLine("}"); f.AppendLine("bool MyProcedure()"); f.AppendLine("{"); f.AppendLine(" bool result;"); f.AppendLine(" log (\"ResultA1: \" + this.Result.Verdict);"); f.AppendLine(" log (\"ResultA1.HasFails: \" + this.HasFails);"); f.AppendLine(" log (\"ResultA1.HasErrors: \" + this.HasErrors);"); f.AppendLine(" result = MySub();"); f.AppendLine(" log (\"ResultA2: \" + this.Result.Verdict);"); f.AppendLine(" log (\"ResultA2.HasFails: \" + this.HasFails);"); f.AppendLine(" log (\"ResultA2.HasErrors: \" + this.HasErrors);"); f.AppendLine(" return result;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(true, (bool)result); var log = new LogInspector(taskContext.Logger); log.DebugDump(); log.ExpectNext("0 - Pre - TestRun - Starting"); log.ExpectNext("1 - Pre - MyProcedure - <arguments>"); log.ExpectNext("2 - Normal - 15 - log: ResultA1: Unset"); log.ExpectNext("2 - Normal - 16 - log: ResultA1.HasFails: False"); log.ExpectNext("2 - Normal - 17 - log: ResultA1.HasErrors: False"); log.ExpectNext("2 - Pre - MySub - <arguments>"); log.ExpectNext("3 - Normal - 3 - log: ResultB1: Unset"); log.ExpectNext("3 - Normal - 4 - log: ResultB1.HasFails: False"); log.ExpectNext("3 - Normal - 5 - log: ResultB1.HasErrors: False"); log.ExpectNext("3 - Normal - 6 - EXPECT: 4<10; Actual: <TRUE> => Pass"); log.ExpectNext("3 - Normal - 7 - log: ResultB2: Pass"); log.ExpectNext("3 - Normal - 8 - log: ResultB2.HasFails: False"); log.ExpectNext("3 - Normal - 9 - log: ResultB2.HasErrors: False"); log.ExpectNext("3 - Post"); log.ExpectNext("2 - Normal - 19 - log: ResultA2: Pass"); log.ExpectNext("2 - Normal - 20 - log: ResultA2.HasFails: False"); log.ExpectNext("2 - Normal - 21 - log: ResultA2.HasErrors: False"); log.ExpectNext("2 - Post"); }
public void TestExpectStatement() { // With title and expect is passing var f = new StringBuilder(); f.AppendLine("bool MyProcedure() {"); f.AppendLine(" expect \"My Expectations\": (4 < 10);"); f.AppendLine(" return true;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(true, (bool)result); // With title and expect is failing f = new StringBuilder(); f.AppendLine("bool MyProcedure() {"); f.AppendLine(" expect \"My Expectations\": (4 > 10);"); f.AppendLine(" return true;"); f.AppendLine("}"); file = FileBuilder.ParseFile(null, f.ToString()); procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; taskContext = ExecutionHelper.ExeContext(); result = taskContext.CallProcedure(procedure); Assert.AreEqual(false, (bool)result); // Without title and expect is passing f = new StringBuilder(); f.AppendLine("bool MyProcedure() {"); f.AppendLine(" expect (4 < 10);"); f.AppendLine(" return true;"); f.AppendLine("}"); file = FileBuilder.ParseFile(null, f.ToString()); procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; taskContext = ExecutionHelper.ExeContext(); result = taskContext.CallProcedure(procedure); Assert.AreEqual(true, (bool)result); // Without title and expect is failing f = new StringBuilder(); f.AppendLine("bool MyProcedure() {"); f.AppendLine(" expect (4 > 10);"); f.AppendLine(" return true;"); f.AppendLine("}"); file = FileBuilder.ParseFile(null, f.ToString()); procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; taskContext = ExecutionHelper.ExeContext(); result = taskContext.CallProcedure(procedure); Assert.AreEqual(false, (bool)result); }
public void TestThisReferenceProcedureName() { var f = new StringBuilder(); f.AppendLine("string MyProcedure() {"); f.AppendLine(" return this.Name;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual("MyProcedure", (string)result); }
public void TestFileWithSimpleDatatable() { var f = new StringBuilder(); f.AppendLine("datatable MyTable"); f.AppendLine("|___| Ax | By | Cn |"); f.AppendLine("| | 10 | true | \"Nips\" |"); f.AppendLine("| | 63 | | Misery |"); f.AppendLine("| | 24 | false | 1.4s |"); f.AppendLine("| | 8 | true | @16:24 |"); f.AppendLine("int UseTheTable() {"); f.AppendLine(" return 10;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(1, file.ListElements().Where(e => e.ElementType == FileElementType.Datatable).Count()); Assert.AreEqual(1, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == "UseTheTable") as IFileProcedure; Assert.AreEqual("UseTheTable", procedure.Name); var table = file.GetFileElement <IDatatable>("MyTable"); Assert.AreEqual("MyTable", table.Name); Assert.AreEqual(3L, table.ColumnCount); Assert.AreEqual(4L, table.RowCount); this.ExpectCell(table, 0, 0, "10", typeof(long), 10L); this.ExpectCell(table, 0, 1, "63", typeof(long), 63L); this.ExpectCell(table, 0, 2, "24", typeof(long), 24L); this.ExpectCell(table, 0, 3, "8", typeof(long), 8L); this.ExpectCell(table, 1, 0, "true", typeof(bool), true); this.ExpectCell(table, 1, 1, "", typeof(void), null); this.ExpectCell(table, 1, 2, "false", typeof(bool), false); this.ExpectCell(table, 1, 3, "true", typeof(bool), true); this.ExpectCell(table, 2, 0, "\"Nips\"", typeof(string), "Nips"); this.ExpectCell(table, 2, 1, "Misery", typeof(StepBro.Core.Data.Identifier), "Misery"); this.ExpectCell(table, 2, 2, "1.4s", typeof(TimeSpan), TimeSpan.FromTicks(TimeSpan.TicksPerMillisecond * 1400)); this.ExpectCell(table, 2, 3, "@16:24", typeof(TimeSpan), TimeSpan.Parse("16:24:00")); //var taskContext = ExecutionHelper.ExeContext(); //taskContext.Logger.IsDebugging = true; //var result = taskContext.CallProcedure(procedure); //Assert.AreEqual(20, (long)result); }
public void TestExpectWithEqualsStatement() { // With title and expect is passing var f = new StringBuilder(); f.AppendLine("bool MyProcedure() {"); f.AppendLine(" int x = 10;"); f.AppendLine(" expect (x == 10);"); f.AppendLine(" return this.HasFails;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(false, (bool)result); }
public void TestLineReaderAwait() { var f = new StringBuilder(); f.AppendLine("string MyProcedure() {"); f.AppendLine(" string[] myArr = [\"Anders\", \"Bent\", \"Christian\", \"Dennis\"];"); f.AppendLine(" var reader = myArr.ToLineReader();"); f.AppendLine(" var found = reader.Await(\"Dennis\", 2s);"); f.AppendLine(" return found;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file.GetFileElement <IFileProcedure>("MyProcedure");; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual("Dennis", (string)result); }
public void TestFunctionCallInReturnStatement() { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("function int MySub() {"); f.AppendLine(" return 323;"); f.AppendLine("}"); f.AppendLine("int MyProcedure() {"); f.AppendLine(" return MySub();"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["MyProcedure"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(323, (long)result); }
internal IFileProcedure CreateTestFileNoParams(string procedureName, string enabled) { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); if (enabled.Contains('A')) { f.AppendLine("procedure void Anders() {"); f.AppendLine(" log (\"This is Anders\");"); f.AppendLine("}"); } if (enabled.Contains('B')) { f.AppendLine("procedure void Bent() {"); f.AppendLine(" log (\"This is Bent\");"); f.AppendLine(" Anders();"); f.AppendLine("}"); } if (enabled.Contains('C')) { f.AppendLine("procedure void Christian() {"); f.AppendLine(" log (\"This is Christian\");"); f.AppendLine(" Anders();"); f.AppendLine(" Bent();"); f.AppendLine("}"); } if (enabled.Contains('D')) { f.AppendLine("procedure void Dennis() {"); f.AppendLine(" log (\"This is Dennis\");"); f.AppendLine(" var proc = Anders;"); f.AppendLine(" proc();"); f.AppendLine("}"); } var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(enabled.Length, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == procedureName) as IFileProcedure; Assert.AreEqual(procedureName, procedure.Name); return(procedure); }
public void TestTestListPartnerDirectCall() { var f = new StringBuilder(); f.AppendLine("int ParkProc() { return 752; }"); f.AppendLine("testlist Anton :"); f.AppendLine(" partner Park : ParkProc;"); f.AppendLine("int Moskus() {"); f.AppendLine(" int n = 0;"); f.AppendLine(" n = Anton.Park();"); f.AppendLine(" return n;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["Moskus"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(752, (long)result); }
public void TestProcedureReferenceCasting() { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("int ProcA(int i) { return i * 10; }"); f.AppendLine("int ProcB() { int i = 0; procedure ref1 = ProcA; ProcA ref2 = ref1; return ref2(4); }"); var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(2, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == "ProcB") as IFileProcedure; Assert.AreEqual("ProcB", procedure.Name); var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(40, (long)result); }
internal IFileProcedure CreateTestFile(string returnStatement) { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("bool b1 = true;"); f.AppendLine("private bool b2 = false;"); f.AppendLine("public bool b3 = true;"); f.AppendLine("public bool b4;"); f.AppendLine(); f.AppendLine("int i1 = 10;"); f.AppendLine("private int i2 = 20;"); f.AppendLine("public int i3 = 30;"); f.AppendLine("public int i4;"); f.AppendLine(); f.AppendLine("decimal f1 = 10.0;"); f.AppendLine("private decimal f2 = 20.2;"); f.AppendLine("public decimal f3 = 30.4;"); f.AppendLine("double f4 = 40.6;"); f.AppendLine("private double f5 = 50.8;"); f.AppendLine("public double f6 = 60.2;"); f.AppendLine("public double f7;"); f.AppendLine(); f.AppendLine("string s1 = \"\";"); f.AppendLine("private string s2 = \"Hey\";"); f.AppendLine("public string s3 = \"a line\\n\";"); f.AppendLine("public string s4;"); f.AppendLine(); f.AppendLine("int UseThoseFileVariables() {"); f.AppendLine(" " + returnStatement); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); file.InitializeFileVariables(null); Assert.AreEqual(19, file.ListFileVariables().Count()); Assert.AreEqual(1, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == "UseThoseFileVariables") as IFileProcedure; Assert.AreEqual("UseThoseFileVariables", procedure.Name); return(procedure); }
public void TestCallSimpleProcedureReference() { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("function int MySub() {"); f.AppendLine(" return 104;"); f.AppendLine("}"); f.AppendLine("int MyProcedure() {"); f.AppendLine(" var proc = MySub;"); f.AppendLine(" var result = proc();"); f.AppendLine(" return result;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["MyProcedure"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(104, (long)result); }
internal IFileProcedure CreateTestFile(string procedureName) { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("procedure void Anders() {"); f.AppendLine(" log (\"This is Anders\");"); f.AppendLine("}"); f.AppendLine("procedure void Bent() {"); f.AppendLine(" log (\"This is Bent\");"); f.AppendLine(" procedure proc = Anders;"); f.AppendLine(" proc();"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(2, file.ListElements().Where(e => e.ElementType == FileElementType.ProcedureDeclaration).Count()); var procedure = file.ListElements().First(p => p.Name == procedureName) as IFileProcedure; Assert.AreEqual(procedureName, procedure.Name); return(procedure); }
public void TestCallWithReturnValue() { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("int MySub() {"); f.AppendLine(" return 772;"); f.AppendLine("}"); f.AppendLine("int MyProcedure() {"); f.AppendLine(" int i = 278;"); f.AppendLine(" i = 631;"); f.AppendLine(" i = MySub();"); f.AppendLine(" return i;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["MyProcedure"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(772, (long)result); }
public void TestTestListPartnerOverrideCall() { var f = new StringBuilder(); f.AppendLine("int ParkProc1() { return 543; }"); f.AppendLine("int ParkProc2() { return 432; }"); f.AppendLine("testlist Anton :"); f.AppendLine(" partner Park : ParkProc1;"); f.AppendLine("testlist Benny : Anton,"); f.AppendLine(" partner override Park : ParkProc2;"); f.AppendLine("int Moskus() {"); f.AppendLine(" int n = 0;"); f.AppendLine(" n = Benny.Park();"); f.AppendLine(" return n;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["Moskus"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(432, (long)result); }
public void TestProcedureReferencePartnerOverrideCall() { var f = new StringBuilder(); f.AppendLine("int ParkProc1() { return 7722; }"); f.AppendLine("int ParkProc2() { return 6633; }"); f.AppendLine("function int Anton() :"); f.AppendLine(" partner Park : ParkProc1;"); f.AppendLine("function int Benny() : Anton,"); f.AppendLine(" partner override Park : ParkProc2;"); f.AppendLine("int Moskus() {"); f.AppendLine(" Anton proc = Benny;"); f.AppendLine(" int n = 0;"); f.AppendLine(" n = proc.Park();"); f.AppendLine(" return n;"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); var procedure = file["Moskus"] as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); var result = taskContext.CallProcedure(procedure); Assert.AreEqual(6633, (long)result); }
public void TestFileWithSingleSimpleTestList() { var f = new StringBuilder(); f.AppendLine("namespace MyFile;"); f.AppendLine("procedure void FirstTestCase() {}"); f.AppendLine("procedure void SecondTestCase() {}"); f.AppendLine("procedure void ThirdTestCase() {}"); f.AppendLine("testlist AllTests"); f.AppendLine("{"); f.AppendLine(" * FirstTestCase"); f.AppendLine(" * SecondTestCase"); f.AppendLine(" * ThirdTestCase"); f.AppendLine("}"); f.AppendLine("procedure void ExecuteAllTests()"); f.AppendLine("{"); f.AppendLine(" var iterator = AllTests.GetProcedureIterator();"); f.AppendLine(" while (iterator.GetNext())"); f.AppendLine(" {"); f.AppendLine(" iterator.Procedure( iterator.Arguments );"); f.AppendLine(" }"); f.AppendLine("}"); var file = FileBuilder.ParseFile(null, f.ToString()); Assert.AreEqual(1, file.ListElements().Where(e => e.ElementType == FileElementType.TestList).Count()); var list = file["AllTests"] as ITestList; Assert.AreEqual("AllTests", list.Name); Assert.AreEqual(3, list.EntryCount); Assert.AreSame(file["FirstTestCase"], list[0].Reference); Assert.AreSame(file["SecondTestCase"], list[1].Reference); Assert.AreSame(file["ThirdTestCase"], list[2].Reference); Assert.AreEqual("FirstTestCase", list[0].Reference.Name); Assert.AreEqual("SecondTestCase", list[1].Reference.Name); Assert.AreEqual("ThirdTestCase", list[2].Reference.Name); Assert.AreEqual("FirstTestCase", list[0].ReferenceName); Assert.AreEqual("SecondTestCase", list[1].ReferenceName); Assert.AreEqual("ThirdTestCase", list[2].ReferenceName); Assert.AreSame(list, list[0].Home); Assert.AreSame(list, list[1].Home); Assert.AreSame(list, list[2].Home); var procedure = file.ListElements().First(p => p.Name == "ExecuteAllTests") as IFileProcedure; var taskContext = ExecutionHelper.ExeContext(); taskContext.CallProcedure(procedure); var log = new LogInspector(taskContext.Logger); log.DebugDump(); log.ExpectNext("0 - Pre - TestRun - Starting"); log.ExpectNext("1 - Pre - MyFile.ExecuteAllTests - <arguments>"); log.ExpectNext("2 - Pre - <DYNAMIC CALL> MyFile.FirstTestCase - <arguments>"); log.ExpectNext("3 - Post"); log.ExpectNext("2 - Pre - <DYNAMIC CALL> MyFile.SecondTestCase - <arguments>"); log.ExpectNext("3 - Post"); log.ExpectNext("2 - Pre - <DYNAMIC CALL> MyFile.ThirdTestCase - <arguments>"); log.ExpectNext("3 - Post"); log.ExpectNext("2 - Post"); log.ExpectEnd(); }