/// <summary> /// This method has been never run. /// </summary> public void Show() { PropertyObject mainSequenceResult = null; // 1. Define column descriptions. IRowQuery columnNamesRow = FluentRowBuilder.CreateRowBuilder().AddColWithStr("No.") .AddColWithStr("Name") .AddColWithStr("Result") .AddColWithStr("Time") .BuildOneTimeRow(); // 2. Define rows made from NumericLimitTest steps. IRowQuery numericLimitTestRow = FluentRowBuilder.CreateRowBuilder().AddColCounter() .AddColWithFormattedValue("TS.StepName") .AddColWithFormattedValue("Value: ", "Numeric", string.Empty) .AddColNumericDiff(mainSequenceResult.GetValNumber("TS.StartTime", 0x0), "TS.StartTime") .BuildRowByStepType("NumericLimitTest"); // 3. Define rows made from MultipleNumericLimitTest steps. IRowQuery multipleNumericLimitTestRow = FluentRowBuilder.CreateRowBuilder().AddColCounter() .AddColWithFormattedValue("TS.StepName") .AddColWithRowsFromPropertyObject("Measurement", FluentRowBuilder.CreateRowBuilder().AddColWithFormattedValue("Data", "%.3f").BuildEveryRow()) .AddColNumericDiff(mainSequenceResult.GetValNumber("TS.StartTime", 0x0), "TS.StartTime") .BuildRowByStepType("NI_MultipleNumericLimitTest"); // 4. Report (the projection happens here). IColumn reportColumn = new Reporter().Report(mainSequenceResult, columnNamesRow, numericLimitTestRow, multipleNumericLimitTestRow); // 5. Format to textual table. string reportStr = new SimpleTextFormatter().Format(reportColumn); }
/// <summary> /// This code is for demo purpose /// </summary> // [Fact] public void Show() { // 1. Prepare result IEnumerable <TestResult> result = new[] { new TestResult("TestMethod0", TimeSpan.FromSeconds(2), true, "Equal", null), new TestResult("TestMethod1", TimeSpan.FromSeconds(2), false, "MultiTrue", new TestResult("Subtest0", TimeSpan.FromSeconds(1), true, "True", null), new TestResult("Subtest1", TimeSpan.FromSeconds(1), false, "True", null)), new TestResult("TestMethod2", TimeSpan.FromSeconds(2), true, "Contains", null), new TestResult("TestMethod3", TimeSpan.FromSeconds(2), true, "Equal", null), new TestResult("TestMethod4", TimeSpan.FromSeconds(2), true, "Empty", null) }; // 2. Define column (report) query IColumnQuery counterColQuery = new CounterColumnQuery(); // Mutable class - it's an ordinal column IEnumerable <IRowQuery> reportQueries = new IRowQuery[] { new OneTimeRowQuery( // 2a. Define first header row new ColumnWithStrQuery("Date"), new ColumnWithStrQuery(DateTime.Now.ToShortDateString())), new OneTimeRowQuery( // 2b. Define second header row new ColumnWithStrQuery("Tested by"), new ColumnWithStrQuery("Me")), new OneTimeRowQuery( // 2c. Define third header row new ColumnWithStrQuery("Final result"), new ColumnWithStrQuery(result.All(tr => tr.Result) ? "Passed" : "Failed")), // 2c. Define body new ByAssertTypeFilter("Equal", counterColQuery, new NameGetter(), new ExecTimeInSecondsGetter(), new ResultGetter()), new ByAssertTypeFilter("MultiTrue", counterColQuery, new NameGetter(), new ExecTimeInSecondsGetter(), new ColumnWithRowsBranchedQuery <TestResult>(tr => tr.InnerTests, new EveryRowQuery( new NameGetter(), new ExecTimeInSecondsGetter(), new ResultGetter())) ) }; // 3. Report IColumn reportedColumn = new Reporter <TestResult>().Report(result, reportQueries); // 3a. Preview column string columnStr = reportedColumn.ToXml().ToString(); // 4. Format string formattedReport = new SimpleTextFormatter().Format(reportedColumn); // 5. Write string reportPath = new SimpleTextWriter().WriteReport(formattedReport, Path.GetTempPath(), "MyReport"); // 6. Read string readReport = new SimpleTextReader().ReadReport(reportPath); // 7. Parse IColumn parsedColumn = new SimpleTextParser().Parse(readReport); // 8. Interpret string finalResult = parsedColumn[ColumnLocation.Root.Nest(2, 1)].ToString(); // etc... }