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");
        }
예제 #2
0
        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");
        }
예제 #4
0
        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);
        }
예제 #5
0
        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);
        }
예제 #6
0
        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);
        }
예제 #7
0
        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);
        }
예제 #8
0
        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);
        }
예제 #9
0
        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);
        }
예제 #10
0
        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);
        }
예제 #11
0
        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);
        }
예제 #12
0
        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);
        }
예제 #13
0
        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);
        }
예제 #14
0
        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);
        }
예제 #16
0
        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);
        }
예제 #17
0
        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);
        }
예제 #18
0
        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);
        }
예제 #19
0
        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();
        }