diff --git a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs index 096ae84b52..668396baa8 100644 --- a/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs +++ b/src/BenchmarkDotNet/Exporters/MarkdownExporter.cs @@ -79,8 +79,8 @@ public enum MarkdownHighlightStrategy [PublicAPI] protected string CodeBlockStart = "```"; [PublicAPI] protected string CodeBlockEnd = "```"; [PublicAPI] protected MarkdownHighlightStrategy StartOfGroupHighlightStrategy = MarkdownHighlightStrategy.None; - [PublicAPI] protected string TableHeaderSeparator = " |"; - [PublicAPI] protected string TableColumnSeparator = " |"; + [PublicAPI] protected string TableHeaderSeparator = " | "; + [PublicAPI] protected string TableColumnSeparator = " | "; [PublicAPI] protected bool UseHeaderSeparatingRow = true; [PublicAPI] protected bool ColumnsStartWithSeparator; [PublicAPI] protected string BoldMarkupFormat = "**{0}**"; @@ -156,21 +156,17 @@ private void PrintTable(SummaryTable table, ILogger logger) logger.WriteLine(); } - if (ColumnsStartWithSeparator) - { - logger.WriteStatistic(TableHeaderSeparator.TrimStart()); - } + logger.WriteStatistic(ColumnsStartWithSeparator ? TableHeaderSeparator.TrimStart() : " "); table.PrintLine(table.FullHeader, logger, string.Empty, TableHeaderSeparator); if (UseHeaderSeparatingRow) { - if (ColumnsStartWithSeparator) - { - logger.WriteStatistic(TableHeaderSeparator.TrimStart()); - } + logger.WriteStatistic(ColumnsStartWithSeparator ? TableHeaderSeparator.TrimStart().TrimEnd() + "-" : "-"); logger.WriteLineStatistic(string.Join("", - table.Columns.Where(c => c.NeedToShow).Select(column => new string('-', column.Width) + GetJustificationIndicator(column.Justify) + "|"))); + table.Columns.Where(c => c.NeedToShow).Select(column => + new string('-', column.Width - 1) + GetHeaderSeparatorIndicator(column.OriginalColumn.IsNumeric) + + GetHeaderSeparatorColumnDivider(column.Index, table.ColumnCount)))); } int rowCounter = 0; @@ -181,8 +177,8 @@ private void PrintTable(SummaryTable table, ILogger logger) if (rowCounter > 0 && table.FullContentStartOfLogicalGroup[rowCounter] && table.SeparateLogicalGroups) { // Print logical separator - if (ColumnsStartWithSeparator) - logger.WriteStatistic(TableColumnSeparator.TrimStart()); + logger.WriteStatistic(ColumnsStartWithSeparator ? TableColumnSeparator.TrimStart() : " "); + table.PrintLine(separatorLine, logger, string.Empty, TableColumnSeparator, highlightRow, false, StartOfGroupHighlightStrategy, BoldMarkupFormat, false); } @@ -193,8 +189,8 @@ private void PrintTable(SummaryTable table, ILogger logger) highlightRow = !highlightRow; } - if (ColumnsStartWithSeparator) - logger.WriteStatistic(TableColumnSeparator.TrimStart()); + + logger.WriteStatistic(ColumnsStartWithSeparator ? TableColumnSeparator.TrimStart() : " "); table.PrintLine(line, logger, string.Empty, TableColumnSeparator, highlightRow, table.FullContentStartOfHighlightGroup[rowCounter], StartOfGroupHighlightStrategy, BoldMarkupFormat, EscapeHtml); @@ -202,17 +198,15 @@ private void PrintTable(SummaryTable table, ILogger logger) } } - private static string GetJustificationIndicator(SummaryTable.SummaryTableColumn.TextJustification textJustification) + private static string GetHeaderSeparatorIndicator(bool isNumeric) { - switch (textJustification) - { - case SummaryTable.SummaryTableColumn.TextJustification.Left: - return " "; - case SummaryTable.SummaryTableColumn.TextJustification.Right: - return ":"; - default: - return " "; - } + return isNumeric ? ":" : " "; + } + + private static string GetHeaderSeparatorColumnDivider(int columnIndex, int columnCount) + { + var isLastColumn = columnIndex != columnCount - 1; + return isLastColumn ? "|-" : "|"; } } } \ No newline at end of file diff --git a/src/BenchmarkDotNet/Helpers/HashCode.cs b/src/BenchmarkDotNet/Helpers/HashCode.cs index 94a5858009..f7e5b948e1 100644 --- a/src/BenchmarkDotNet/Helpers/HashCode.cs +++ b/src/BenchmarkDotNet/Helpers/HashCode.cs @@ -109,6 +109,23 @@ public static int Combine(T1 value1, T2 value2, return hashCode; } + public static int Combine(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, + T8 value8, T9 value9, T10 value10) + { + int hashCode = 0; + hashCode = Hash(hashCode, value1); + hashCode = Hash(hashCode, value2); + hashCode = Hash(hashCode, value3); + hashCode = Hash(hashCode, value4); + hashCode = Hash(hashCode, value5); + hashCode = Hash(hashCode, value6); + hashCode = Hash(hashCode, value7); + hashCode = Hash(hashCode, value8); + hashCode = Hash(hashCode, value9); + hashCode = Hash(hashCode, value10); + return hashCode; + } + [MethodImpl(MethodImplOptions.AggressiveInlining)] private static int Hash(int hashCode, T value) { @@ -128,7 +145,8 @@ private static int Hash(int hashCode, T value, IEqualityComparer comparer) } #pragma warning disable CS0809 // Obsolete member 'HashCode.GetHashCode()' overrides non-obsolete member 'object.GetHashCode()' - [Obsolete("HashCode is a mutable struct and should not be compared with other HashCodes. Use ToHashCode to retrieve the computed hash code.", error: true)] + [Obsolete("HashCode is a mutable struct and should not be compared with other HashCodes. Use ToHashCode to retrieve the computed hash code.", + error: true)] [EditorBrowsable(EditorBrowsableState.Never)] public override int GetHashCode() => throw new NotSupportedException(); diff --git a/src/BenchmarkDotNet/Reports/Summary.cs b/src/BenchmarkDotNet/Reports/Summary.cs index 782a2e6af9..7a9382f62d 100644 --- a/src/BenchmarkDotNet/Reports/Summary.cs +++ b/src/BenchmarkDotNet/Reports/Summary.cs @@ -47,7 +47,8 @@ public Summary( TimeSpan totalTime, CultureInfo cultureInfo, ImmutableArray validationErrors, - ImmutableArray columnHidingRules) + ImmutableArray columnHidingRules, + SummaryStyle summaryStyle = null) { Title = title; ResultsDirectoryPath = resultsDirectoryPath; @@ -64,7 +65,7 @@ public Summary( BenchmarksCases = Orderer.GetSummaryOrder(reports.Select(report => report.BenchmarkCase).ToImmutableArray(), this).ToImmutableArray(); // we sort it first Reports = BenchmarksCases.Select(b => ReportMap[b]).ToImmutableArray(); // we use sorted collection to re-create reports list BaseliningStrategy = BaseliningStrategy.Create(BenchmarksCases); - Style = GetConfiguredSummaryStyleOrDefaultOne(BenchmarksCases).WithCultureInfo(cultureInfo); + Style = (summaryStyle ?? GetConfiguredSummaryStyleOrDefaultOne(BenchmarksCases)).WithCultureInfo(cultureInfo); Table = GetTable(Style); AllRuntimes = BuildAllRuntimes(HostEnvironmentInfo, Reports); } diff --git a/src/BenchmarkDotNet/Reports/SummaryStyle.cs b/src/BenchmarkDotNet/Reports/SummaryStyle.cs index 461de108df..23451442df 100644 --- a/src/BenchmarkDotNet/Reports/SummaryStyle.cs +++ b/src/BenchmarkDotNet/Reports/SummaryStyle.cs @@ -3,6 +3,7 @@ using BenchmarkDotNet.Columns; using BenchmarkDotNet.Helpers; using Perfolizer.Horology; +using static BenchmarkDotNet.Reports.SummaryTable.SummaryTableColumn; // ReSharper disable MemberCanBePrivate.Global @@ -10,7 +11,9 @@ namespace BenchmarkDotNet.Reports { public class SummaryStyle : IEquatable { - public static readonly SummaryStyle Default = new SummaryStyle(DefaultCultureInfo.Instance, printUnitsInHeader: false, printUnitsInContent: true, printZeroValuesInContent: false, sizeUnit: null, timeUnit: null); + public static readonly SummaryStyle Default = new SummaryStyle(DefaultCultureInfo.Instance, printUnitsInHeader: false, printUnitsInContent: true, + printZeroValuesInContent: false, sizeUnit: null, timeUnit: null); + internal const int DefaultMaxParameterColumnWidth = 15 + 5; // 5 is for postfix " [15]" public bool PrintUnitsInHeader { get; } @@ -24,8 +27,12 @@ public class SummaryStyle : IEquatable public RatioStyle RatioStyle { get; } + public TextJustification TextColumnJustification { get; } + public TextJustification NumericColumnJustification { get; } + public SummaryStyle(CultureInfo? cultureInfo, bool printUnitsInHeader, SizeUnit sizeUnit, TimeUnit timeUnit, bool printUnitsInContent = true, - bool printZeroValuesInContent = false, int maxParameterColumnWidth = DefaultMaxParameterColumnWidth, RatioStyle ratioStyle = RatioStyle.Value) + bool printZeroValuesInContent = false, int maxParameterColumnWidth = DefaultMaxParameterColumnWidth, RatioStyle ratioStyle = RatioStyle.Value, + TextJustification textColumnJustification = TextJustification.Left, TextJustification numericColumnJustification = TextJustification.Right) { if (maxParameterColumnWidth < DefaultMaxParameterColumnWidth) throw new ArgumentOutOfRangeException(nameof(maxParameterColumnWidth), $"{DefaultMaxParameterColumnWidth} is the minimum."); @@ -35,29 +42,37 @@ public SummaryStyle(CultureInfo? cultureInfo, bool printUnitsInHeader, SizeUnit PrintUnitsInContent = printUnitsInContent; SizeUnit = sizeUnit; TimeUnit = timeUnit; - PrintZeroValuesInContent = printZeroValuesInContent; MaxParameterColumnWidth = maxParameterColumnWidth; RatioStyle = ratioStyle; CodeSizeUnit = SizeUnit.B; + PrintZeroValuesInContent = printZeroValuesInContent; + TextColumnJustification = textColumnJustification; + NumericColumnJustification = numericColumnJustification; } public SummaryStyle WithTimeUnit(TimeUnit timeUnit) - => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, timeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, RatioStyle); + => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, timeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, + RatioStyle, TextColumnJustification, NumericColumnJustification); public SummaryStyle WithSizeUnit(SizeUnit sizeUnit) - => new SummaryStyle(CultureInfo, PrintUnitsInHeader, sizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, RatioStyle); + => new SummaryStyle(CultureInfo, PrintUnitsInHeader, sizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, + RatioStyle, TextColumnJustification, NumericColumnJustification); public SummaryStyle WithZeroMetricValuesInContent() - => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, printZeroValuesInContent: true, MaxParameterColumnWidth, RatioStyle); + => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, printZeroValuesInContent: true, + MaxParameterColumnWidth, RatioStyle, TextColumnJustification, NumericColumnJustification); public SummaryStyle WithMaxParameterColumnWidth(int maxParameterColumnWidth) - => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, maxParameterColumnWidth, RatioStyle); + => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, maxParameterColumnWidth, + RatioStyle, TextColumnJustification, NumericColumnJustification); public SummaryStyle WithCultureInfo(CultureInfo cultureInfo) - => new SummaryStyle(cultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, RatioStyle); + => new SummaryStyle(cultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, + RatioStyle, TextColumnJustification, NumericColumnJustification); public SummaryStyle WithRatioStyle(RatioStyle ratioStyle) - => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, ratioStyle); + => new SummaryStyle(CultureInfo, PrintUnitsInHeader, SizeUnit, TimeUnit, PrintUnitsInContent, PrintZeroValuesInContent, MaxParameterColumnWidth, + ratioStyle, TextColumnJustification, NumericColumnJustification); public bool Equals(SummaryStyle other) { @@ -73,7 +88,9 @@ public bool Equals(SummaryStyle other) && Equals(CodeSizeUnit, other.CodeSizeUnit) && Equals(TimeUnit, other.TimeUnit) && MaxParameterColumnWidth == other.MaxParameterColumnWidth - && RatioStyle == other.RatioStyle; + && RatioStyle == other.RatioStyle + && TextColumnJustification == other.TextColumnJustification + && NumericColumnJustification == other.NumericColumnJustification; } public override bool Equals(object obj) => obj is SummaryStyle summary && Equals(summary); @@ -87,7 +104,9 @@ public override int GetHashCode() => CodeSizeUnit, TimeUnit, MaxParameterColumnWidth, - RatioStyle); + RatioStyle, + TextColumnJustification, + NumericColumnJustification); public static bool operator ==(SummaryStyle left, SummaryStyle right) => Equals(left, right); diff --git a/src/BenchmarkDotNet/Reports/SummaryTable.cs b/src/BenchmarkDotNet/Reports/SummaryTable.cs index 59c4630bd3..9ab5e983fd 100644 --- a/src/BenchmarkDotNet/Reports/SummaryTable.cs +++ b/src/BenchmarkDotNet/Reports/SummaryTable.cs @@ -55,6 +55,7 @@ internal SummaryTable(Summary summary, SummaryStyle style = null) .Select(r => r.GcStats.GetBytesAllocatedPerOperation(r.BenchmarkCase).Value) .ToArray())); } + EffectiveSummaryStyle = style; var columns = summary.GetColumns(); ColumnCount = columns.Length; @@ -96,8 +97,6 @@ internal SummaryTable(Summary summary, SummaryStyle style = null) bool hide = summary.ColumnHidingRules.Any(rule => rule.NeedToHide(column)); Columns[i] = new SummaryTableColumn(this, i, column, hide); } - - EffectiveSummaryStyle = style; } public class SummaryTableColumn @@ -123,7 +122,7 @@ public SummaryTableColumn(SummaryTable table, int index, IColumn column, bool hi IsDefault = table.IsDefault[index]; OriginalColumn = column; - Justify = column.IsNumeric ? TextJustification.Right : TextJustification.Left; + Justify = column.IsNumeric ? table.EffectiveSummaryStyle.NumericColumnJustification : table.EffectiveSummaryStyle.TextColumnJustification; bool needToShow = column.AlwaysShow || Content.Distinct().Count() > 1; NeedToShow = !hide && needToShow; diff --git a/src/BenchmarkDotNet/Reports/SummaryTableExtensions.cs b/src/BenchmarkDotNet/Reports/SummaryTableExtensions.cs index 68419c3054..9c01c8e179 100644 --- a/src/BenchmarkDotNet/Reports/SummaryTableExtensions.cs +++ b/src/BenchmarkDotNet/Reports/SummaryTableExtensions.cs @@ -48,7 +48,8 @@ public static void PrintLine(this SummaryTable table, string[] line, ILogger log } public static void PrintLine(this SummaryTable table, string[] line, ILogger logger, string leftDel, string rightDel, - bool highlightRow, bool startOfGroup, MarkdownExporter.MarkdownHighlightStrategy startOfGroupHighlightStrategy, string boldMarkupFormat, bool escapeHtml) + bool highlightRow, bool startOfGroup, MarkdownExporter.MarkdownHighlightStrategy startOfGroupHighlightStrategy, string boldMarkupFormat, + bool escapeHtml) { for (int columnIndex = 0; columnIndex < table.ColumnCount; columnIndex++) { @@ -82,11 +83,23 @@ public static void PrintLine(this SummaryTable table, string[] line, ILogger log private static string BuildStandardText(SummaryTable table, string[] line, string leftDel, string rightDel, int columnIndex) { var buffer = GetClearBuffer(); + var isBuildingHeader = table.FullHeader[columnIndex] == line[columnIndex]; + var columnJustification = isBuildingHeader ? SummaryTable.SummaryTableColumn.TextJustification.Left : table.Columns[columnIndex].Justify; buffer.Append(leftDel); - PadLeft(table, line, leftDel, rightDel, columnIndex, buffer); + if (columnJustification == SummaryTable.SummaryTableColumn.TextJustification.Right) + { + AddPadding(table, line, leftDel, rightDel, columnIndex, buffer); + } + buffer.Append(line[columnIndex]); - buffer.Append(rightDel); + + if (columnJustification == SummaryTable.SummaryTableColumn.TextJustification.Left) + { + AddPadding(table, line, leftDel, rightDel, columnIndex, buffer); + } + var isLastColumn = columnIndex == table.ColumnCount - 1; + buffer.Append(isLastColumn ? rightDel.TrimEnd() : rightDel); return buffer.ToString(); } @@ -94,11 +107,23 @@ private static string BuildStandardText(SummaryTable table, string[] line, strin private static string BuildBoldText(SummaryTable table, string[] line, string leftDel, string rightDel, int columnIndex, string boldMarkupFormat) { var buffer = GetClearBuffer(); + var isBuildingHeader = table.FullHeader[columnIndex] == line[columnIndex]; + var columnJustification = isBuildingHeader ? SummaryTable.SummaryTableColumn.TextJustification.Left : table.Columns[columnIndex].Justify; buffer.Append(leftDel); - PadLeft(table, line, leftDel, rightDel, columnIndex, buffer); + if (columnJustification == SummaryTable.SummaryTableColumn.TextJustification.Right) + { + AddPadding(table, line, leftDel, rightDel, columnIndex, buffer); + } + buffer.AppendFormat(boldMarkupFormat, line[columnIndex]); - buffer.Append(rightDel); + + if (columnJustification == SummaryTable.SummaryTableColumn.TextJustification.Left) + { + AddPadding(table, line, leftDel, rightDel, columnIndex, buffer); + } + var isLastColumn = columnIndex == table.ColumnCount - 1; + buffer.Append(isLastColumn ? rightDel.TrimEnd() : rightDel); return buffer.ToString(); } @@ -116,7 +141,7 @@ private static StringBuilder GetClearBuffer() } [MethodImpl(MethodImplOptions.AggressiveInlining)] - private static void PadLeft(SummaryTable table, string[] line, string leftDel, string rightDel, int columnIndex, StringBuilder buffer) + private static void AddPadding(SummaryTable table, string[] line, string leftDel, string rightDel, int columnIndex, StringBuilder buffer) { const char space = ' '; const int extraWidth = 2; // " |".Length is not included in the column's Width diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt index fba519229a..41554d0c7c 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfBool.verified.txt @@ -7,9 +7,9 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | False | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | True | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | False | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | True | 202.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt index 0754264ed2..c1a301f759 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfEnum.verified.txt @@ -7,10 +7,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | A | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | B | 202.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | C | 302.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | A | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | B | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | C | 302.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt index 23c73f72bf..61f4eeed4f 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableBool.verified.txt @@ -7,10 +7,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | False | 202.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | True | 302.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | False | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | True | 302.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt index a74fb9c3e4..0c1dd08fdc 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithAllValuesOfNullableEnum.verified.txt @@ -7,11 +7,11 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | A | 202.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | B | 302.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | C | 402.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | A | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | B | 302.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | C | 402.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt index de2ba47660..ba31d1bc3b 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedFlagsEnumError.verified.txt @@ -7,9 +7,9 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | 0 | 102.0 ns | 6.09 ns | 1.58 ns | + Benchmark | 0 | 102.0 ns | 6.09 ns | 1.58 ns | Errors: 1 * Unable to use TestFlagsEnum with [ParamsAllValues], because it's flags enum. diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt index 61c034243d..19566395d8 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedNullableTypeError.verified.txt @@ -7,10 +7,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Benchmark | 0 | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | ? | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Benchmark | 0 | 202.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 1 * Type Int32 cannot be used with [ParamsAllValues], allowed types are: bool, enum types and nullable type for another allowed type. diff --git a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt index 0e7587f03a..9a27385161 100644 --- a/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Attributes/VerifiedFiles/ParamsAllValuesVerifyTests.BenchmarkShouldProduceSummary_WithNotAllowedTypeError.verified.txt @@ -7,9 +7,9 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | ParamProperty | Mean | Error | StdDev | + Method | ParamProperty | Mean | Error | StdDev | ---------- |-------------- |---------:|--------:|--------:| - Benchmark | 0 | 102.0 ns | 6.09 ns | 1.58 ns | + Benchmark | 0 | 102.0 ns | 6.09 ns | 1.58 ns | Errors: 1 * Type Int32 cannot be used with [ParamsAllValues], allowed types are: bool, enum types and nullable type for another allowed type. diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt index 31d5cec733..cd3482c04f 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_Invariant.verified.txt @@ -13,9 +13,9 @@ WarmupCount=15 .... [options="header"] |=== -| Method| Mean| Error| StdDev| P67 -| Foo| 1.000 ns| NA| 0.000 ns| 1.000 ns -| Bar| 1.000 ns| NA| 0.000 ns| 1.000 ns +|Method |Mean |Error |StdDev |P67 +|Foo | 1.000 ns| NA| 0.000 ns| 1.000 ns +|Bar | 1.000 ns| NA| 0.000 ns| 1.000 ns |=== ############################################ HtmlExporter @@ -410,10 +410,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | - Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-atlassian ############################################ @@ -429,9 +429,9 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 {noformat} -||Method || Mean ||Error || StdDev || P67 || -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +||Method ||Mean ||Error ||StdDev ||P67 || +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-console ############################################ @@ -445,10 +445,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-github ############################################ @@ -464,10 +464,10 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 ``` -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-stackoverflow ############################################ @@ -481,10 +481,10 @@ MarkdownExporter-stackoverflow Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | - Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ PlainExporter ############################################ diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt index 31d5cec733..cd3482c04f 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_en-US.verified.txt @@ -13,9 +13,9 @@ WarmupCount=15 .... [options="header"] |=== -| Method| Mean| Error| StdDev| P67 -| Foo| 1.000 ns| NA| 0.000 ns| 1.000 ns -| Bar| 1.000 ns| NA| 0.000 ns| 1.000 ns +|Method |Mean |Error |StdDev |P67 +|Foo | 1.000 ns| NA| 0.000 ns| 1.000 ns +|Bar | 1.000 ns| NA| 0.000 ns| 1.000 ns |=== ############################################ HtmlExporter @@ -410,10 +410,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | - Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-atlassian ############################################ @@ -429,9 +429,9 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 {noformat} -||Method || Mean ||Error || StdDev || P67 || -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +||Method ||Mean ||Error ||StdDev ||P67 || +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-console ############################################ @@ -445,10 +445,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-github ############################################ @@ -464,10 +464,10 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 ``` -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | -| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | +| Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ MarkdownExporter-stackoverflow ############################################ @@ -481,10 +481,10 @@ MarkdownExporter-stackoverflow Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | - Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Foo | 1.000 ns | NA | 0.000 ns | 1.000 ns | + Bar | 1.000 ns | NA | 0.000 ns | 1.000 ns | ############################################ PlainExporter ############################################ diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt index 6071e78b4d..bbfaff1da8 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/CommonExporterVerifyTests.Exporters_ru-RU.verified.txt @@ -13,9 +13,9 @@ WarmupCount=15 .... [options="header"] |=== -| Method| Mean| Error| StdDev| P67 -| Foo| 1,000 ns| NA| 0,000 ns| 1,000 ns -| Bar| 1,000 ns| NA| 0,000 ns| 1,000 ns +|Method |Mean |Error |StdDev |P67 +|Foo | 1,000 ns| NA| 0,000 ns| 1,000 ns +|Bar | 1,000 ns| NA| 0,000 ns| 1,000 ns |=== ############################################ HtmlExporter @@ -410,10 +410,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | - Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | + Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | + Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | ############################################ MarkdownExporter-atlassian ############################################ @@ -429,9 +429,9 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 {noformat} -||Method || Mean ||Error || StdDev || P67 || -| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | -| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | +||Method ||Mean ||Error ||StdDev ||P67 || +| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | +| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | ############################################ MarkdownExporter-console ############################################ @@ -445,10 +445,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | -| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | +| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | +| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | ############################################ MarkdownExporter-github ############################################ @@ -464,10 +464,10 @@ Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 ``` -| Method | Mean | Error | StdDev | P67 | +| Method | Mean | Error | StdDev | P67 | |------- |---------:|------:|---------:|---------:| -| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | -| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | +| Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | +| Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | ############################################ MarkdownExporter-stackoverflow ############################################ @@ -481,10 +481,10 @@ MarkdownExporter-stackoverflow Job=LongRun IterationCount=100 LaunchCount=3 WarmupCount=15 - Method | Mean | Error | StdDev | P67 | + Method | Mean | Error | StdDev | P67 | ------- |---------:|------:|---------:|---------:| - Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | - Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | + Foo | 1,000 ns | NA | 0,000 ns | 1,000 ns | + Bar | 1,000 ns | NA | 0,000 ns | 1,000 ns | ############################################ PlainExporter ############################################ diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt index 40bedf0647..78bde45ccb 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Escape_ParamsAndArguments.verified.txt @@ -7,13 +7,13 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | StringParam | charArg | Mean | Error | StdDev | + Method | StringParam | charArg | Mean | Error | StdDev | ------- |------------ |-------- |---------:|--------:|--------:| - Foo | \t | \t | 102.0 ns | 6.09 ns | 1.58 ns | ^ - Foo | \t | \n | 202.0 ns | 6.09 ns | 1.58 ns | ^ - Bar | \t | ? | 302.0 ns | 6.09 ns | 1.58 ns | ^ - Foo | \n | \t | 402.0 ns | 6.09 ns | 1.58 ns | ^ - Foo | \n | \n | 502.0 ns | 6.09 ns | 1.58 ns | ^ - Bar | \n | ? | 602.0 ns | 6.09 ns | 1.58 ns | ^ + Foo | \t | \t | 102.0 ns | 6.09 ns | 1.58 ns | ^ + Foo | \t | \n | 202.0 ns | 6.09 ns | 1.58 ns | ^ + Bar | \t | ? | 302.0 ns | 6.09 ns | 1.58 ns | ^ + Foo | \n | \t | 402.0 ns | 6.09 ns | 1.58 ns | ^ + Foo | \n | \n | 502.0 ns | 6.09 ns | 1.58 ns | ^ + Bar | \n | ? | 602.0 ns | 6.09 ns | 1.58 ns | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt index c2ce72cecb..b690775469 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoJobBaselines.verified.txt @@ -8,13 +8,13 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |---------:|--------:|--------:|------:|--------:|-----:|---------------------------- |--------- | - Foo | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Invalid_TwoJobBaselines.Foo | Yes | - Foo | Job2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 2 | Invalid_TwoJobBaselines.Foo | Yes | + Foo | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Invalid_TwoJobBaselines.Foo | Yes | + Foo | Job2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 2 | Invalid_TwoJobBaselines.Foo | Yes | | | | | | | | | | | - Bar | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Invalid_TwoJobBaselines.Bar | Yes | - Bar | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | Invalid_TwoJobBaselines.Bar | Yes | + Bar | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Invalid_TwoJobBaselines.Bar | Yes | + Bar | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | Invalid_TwoJobBaselines.Bar | Yes | Errors: 2 * Only 1 job in a group can have "Baseline = true" applied to it, group Invalid_TwoJobBaselines.Foo in class Invalid_TwoJobBaselines has 2 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt index c7782ee480..aaba6592c2 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_Invalid_TwoMethodBaselines.verified.txt @@ -7,10 +7,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |---------:|--------:|--------:|------:|--------:|-----:|------------- |--------- | - Foo | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | DefaultJob | Yes | - Bar | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | DefaultJob | Yes | + Foo | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | DefaultJob | Yes | + Bar | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | DefaultJob | Yes | Errors: 1 * Only 1 benchmark method in a group can have "Baseline = true" applied to it, group DefaultJob in class Invalid_TwoMethodBaselines has 2 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt index af6d5917f2..e8793a9409 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsJobs.verified.txt @@ -8,15 +8,15 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |---------:|--------:|--------:|------:|--------:|-----:|----------------------------- |--------- | - Base | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Base | Yes | - Base | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 2 | JobBaseline_MethodsJobs.Base | No | + Base | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Base | Yes | + Base | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 2 | JobBaseline_MethodsJobs.Base | No | | | | | | | | | | | - Foo | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Foo | Yes | - Foo | Job2 | 502.0 ns | 6.09 ns | 1.58 ns | 2.49 | 0.01 | 2 | JobBaseline_MethodsJobs.Foo | No | + Foo | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Foo | Yes | + Foo | Job2 | 502.0 ns | 6.09 ns | 1.58 ns | 2.49 | 0.01 | 2 | JobBaseline_MethodsJobs.Foo | No | | | | | | | | | | | - Bar | Job1 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Bar | Yes | - Bar | Job2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | JobBaseline_MethodsJobs.Bar | No | + Bar | Job1 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | JobBaseline_MethodsJobs.Bar | Yes | + Bar | Job2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | JobBaseline_MethodsJobs.Bar | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt index cff1ed6d40..479192b41e 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_JobBaseline_MethodsParamsJobs.verified.txt @@ -8,24 +8,24 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|------:|--------:|-----:|---------------------------------------------- |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Base | Yes | ^ - Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Base | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Base | Yes | ^ + Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Base | No | | | | | | | | | | | | - Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Foo | Yes | - Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 2.49 | 0.01 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Foo | No | + Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Foo | Yes | + Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 2.49 | 0.01 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Foo | No | | | | | | | | | | | | - Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Bar | Yes | - Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Bar | No | + Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-JobBaseline_MethodsParamsJobs.Bar | Yes | + Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.99 | 0.01 | 2 | [Param=2]-JobBaseline_MethodsParamsJobs.Bar | No | | | | | | | | | | | | - Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Base | Yes | ^ - Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.43 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Base | No | + Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Base | Yes | ^ + Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.43 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Base | No | | | | | | | | | | | | - Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Foo | Yes | - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.37 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Foo | No | + Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Foo | Yes | + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.37 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Foo | No | | | | | | | | | | | | - Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Bar | Yes | - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.33 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Bar | No | + Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-JobBaseline_MethodsParamsJobs.Bar | Yes | + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.33 | 0.00 | 2 | [Param=10]-JobBaseline_MethodsParamsJobs.Bar | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt index 81f3e737f4..2355618257 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_Methods.verified.txt @@ -7,10 +7,10 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |---------:|--------:|--------:|------:|--------:|-----:|------------- |--------- | - Base | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | DefaultJob | Yes | - Foo | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | DefaultJob | No | - Bar | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | DefaultJob | No | + Base | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | DefaultJob | Yes | + Foo | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | DefaultJob | No | + Bar | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | DefaultJob | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt index df10b2d226..1096235ebb 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsJobs.verified.txt @@ -8,14 +8,14 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |---------:|--------:|--------:|------:|--------:|-----:|------------- |--------- | - Base | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Job1 | Yes | - Foo | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | Job1 | No | - Bar | Job1 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | Job1 | No | + Base | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Job1 | Yes | + Foo | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | Job1 | No | + Bar | Job1 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | Job1 | No | | | | | | | | | | | - Base | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Job2 | Yes | - Foo | Job2 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | Job2 | No | - Bar | Job2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | Job2 | No | + Base | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | Job2 | Yes | + Foo | Job2 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | Job2 | No | + Bar | Job2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | Job2 | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt index bd2c4984bd..2178ec1d94 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParams.verified.txt @@ -7,14 +7,14 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC DefaultJob : extra output line - Method | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |------ |---------:|--------:|--------:|------:|--------:|-----:|---------------------- |--------- | - Base | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-DefaultJob | Yes | ^ - Foo | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2]-DefaultJob | No | - Bar | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2]-DefaultJob | No | + Base | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-DefaultJob | Yes | ^ + Foo | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2]-DefaultJob | No | + Bar | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2]-DefaultJob | No | | | | | | | | | | | - Base | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-DefaultJob | Yes | ^ - Foo | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | [Param=10]-DefaultJob | No | - Bar | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | [Param=10]-DefaultJob | No | + Base | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-DefaultJob | Yes | ^ + Foo | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | [Param=10]-DefaultJob | No | + Bar | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | [Param=10]-DefaultJob | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt index f07268e77c..879a228733 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodBaseline_MethodsParamsJobs.verified.txt @@ -8,22 +8,22 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|------:|--------:|-----:|---------------- |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-Job1 | Yes | ^ - Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2]-Job1 | No | - Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2]-Job1 | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-Job1 | Yes | ^ + Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2]-Job1 | No | + Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2]-Job1 | No | | | | | | | | | | | | - Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-Job2 | Yes | - Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | [Param=2]-Job2 | No | - Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | [Param=2]-Job2 | No | + Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2]-Job2 | Yes | + Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 1.25 | 0.00 | 2 | [Param=2]-Job2 | No | + Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1.50 | 0.00 | 3 | [Param=2]-Job2 | No | | | | | | | | | | | | - Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-Job1 | Yes | ^ - Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.14 | 0.00 | 2 | [Param=10]-Job1 | No | - Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 1.28 | 0.00 | 3 | [Param=10]-Job1 | No | + Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-Job1 | Yes | ^ + Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.14 | 0.00 | 2 | [Param=10]-Job1 | No | + Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 1.28 | 0.00 | 3 | [Param=10]-Job1 | No | | | | | | | | | | | | - Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-Job2 | Yes | - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.10 | 0.00 | 2 | [Param=10]-Job2 | No | - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 3 | [Param=10]-Job2 | No | + Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10]-Job2 | Yes | + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.10 | 0.00 | 2 | [Param=10]-Job2 | No | + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 3 | [Param=10]-Job2 | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt index 00cfea261d..2e9f774250 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobs.verified.txt @@ -8,11 +8,11 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |---------:|--------:|--------:|------:|--------:|-----:|------------- |--------- | - Foo | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | * | Yes | - Bar | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | * | No | - Foo | Job2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | * | No | - Bar | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 4 | * | No | + Foo | Job1 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | * | Yes | + Bar | Job1 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | * | No | + Foo | Job2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | * | No | + Bar | Job2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 4 | * | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt index 90a760d058..fac0a1a063 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_MethodJobBaseline_MethodsJobsParams.verified.txt @@ -8,16 +8,16 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |------ |---------:|--------:|--------:|------:|--------:|-----:|------------- |--------- | - Foo | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2] | Yes | ^ - Bar | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2] | No | - Foo | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2] | No | - Bar | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 4 | [Param=2] | No | + Foo | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=2] | Yes | ^ + Bar | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | [Param=2] | No | + Foo | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 2.96 | 0.03 | 3 | [Param=2] | No | + Bar | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 3.94 | 0.05 | 4 | [Param=2] | No | | | | | | | | | | | | - Foo | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10] | Yes | ^ - Bar | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 2 | [Param=10] | No | - Foo | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.40 | 0.00 | 3 | [Param=10] | No | - Bar | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.60 | 0.00 | 4 | [Param=10] | No | + Foo | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | [Param=10] | Yes | ^ + Bar | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 2 | [Param=10] | No | + Foo | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.40 | 0.00 | 3 | [Param=10] | No | + Bar | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.60 | 0.00 | 4 | [Param=10] | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt index 53b548d52c..52a50e2c03 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs.verified.txt @@ -8,19 +8,19 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|-----:|------------- |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | * | No | ^ - Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | * | No | - Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 3 | * | No | - Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 4 | * | No | - Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 5 | * | No | - Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 6 | * | No | - Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 7 | * | No | ^ - Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 8 | * | No | - Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 9 | * | No | - Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 10 | * | No | - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 11 | * | No | - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 12 | * | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | * | No | ^ + Foo | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | * | No | + Bar | Job1 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 3 | * | No | + Base | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 4 | * | No | + Foo | Job2 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 5 | * | No | + Bar | Job2 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 6 | * | No | + Base | Job1 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 7 | * | No | ^ + Foo | Job1 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 8 | * | No | + Bar | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 9 | * | No | + Base | Job2 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 10 | * | No | + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 11 | * | No | + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 12 | * | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt index 8063d96fe8..355aa0ebd1 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByAll.verified.txt @@ -8,38 +8,38 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|------:|--------:|-----:|---------------------------------------------------------------- |--------- | - A1 | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job1-[Param=2]-CatA | Yes | ^ + A1 | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job1-[Param=2]-CatA | Yes | ^ | | | | | | | | | | | - A1 | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job1-[Param=10]-CatA | Yes | ^ + A1 | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job1-[Param=10]-CatA | Yes | ^ | | | | | | | | | | | - A1 | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job2-[Param=2]-CatA | Yes | ^ + A1 | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job2-[Param=2]-CatA | Yes | ^ | | | | | | | | | | | - A1 | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job2-[Param=10]-CatA | Yes | ^ + A1 | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A1-Job2-[Param=10]-CatA | Yes | ^ | | | | | | | | | | | - A2 | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job1-[Param=2]-CatA | No | ^ + A2 | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job1-[Param=2]-CatA | No | ^ | | | | | | | | | | | - A2 | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job1-[Param=10]-CatA | No | ^ + A2 | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job1-[Param=10]-CatA | No | ^ | | | | | | | | | | | - A2 | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job2-[Param=2]-CatA | No | ^ + A2 | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job2-[Param=2]-CatA | No | ^ | | | | | | | | | | | - A2 | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job2-[Param=10]-CatA | No | ^ + A2 | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.A2-Job2-[Param=10]-CatA | No | ^ | | | | | | | | | | | - B1 | Job1 | 2 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job1-[Param=2]-CatB | Yes | ^ + B1 | Job1 | 2 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job1-[Param=2]-CatB | Yes | ^ | | | | | | | | | | | - B1 | Job1 | 10 | 1,302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job1-[Param=10]-CatB | Yes | ^ + B1 | Job1 | 10 | 1,302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job1-[Param=10]-CatB | Yes | ^ | | | | | | | | | | | - B1 | Job2 | 2 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job2-[Param=2]-CatB | Yes | ^ + B1 | Job2 | 2 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job2-[Param=2]-CatB | Yes | ^ | | | | | | | | | | | - B1 | Job2 | 10 | 1,502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job2-[Param=10]-CatB | Yes | ^ + B1 | Job2 | 10 | 1,502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B1-Job2-[Param=10]-CatB | Yes | ^ | | | | | | | | | | | - B2 | Job1 | 2 | 1,002.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job1-[Param=2]-CatB | No | ^ + B2 | Job1 | 2 | 1,002.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job1-[Param=2]-CatB | No | ^ | | | | | | | | | | | - B2 | Job1 | 10 | 1,402.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job1-[Param=10]-CatB | No | ^ + B2 | Job1 | 10 | 1,402.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job1-[Param=10]-CatB | No | ^ | | | | | | | | | | | - B2 | Job2 | 2 | 1,202.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job2-[Param=2]-CatB | No | ^ + B2 | Job2 | 2 | 1,202.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job2-[Param=2]-CatB | No | ^ | | | | | | | | | | | - B2 | Job2 | 10 | 1,602.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job2-[Param=10]-CatB | No | ^ + B2 | Job2 | 10 | 1,602.0 ns | 6.09 ns | 1.58 ns | ? | ? | 1 | NoBaseline_MethodsParamsJobs_GroupByAll.B2-Job2-[Param=10]-CatB | No | ^ Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt index 9ceee1be91..b586e21cd9 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByCategory.verified.txt @@ -8,30 +8,30 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Ratio | RatioSD | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|------:|--------:|-----:|--------------------- |--------- | - A1 | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=2]-Job1 | Yes | ^ - A2 | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | CatA-[Param=2]-Job1 | No | + A1 | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=2]-Job1 | Yes | ^ + A2 | Job1 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1.98 | 0.02 | 2 | CatA-[Param=2]-Job1 | No | | | | | | | | | | | | - A1 | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=2]-Job2 | Yes | - A2 | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.33 | 0.00 | 2 | CatA-[Param=2]-Job2 | No | + A1 | Job2 | 2 | 302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=2]-Job2 | Yes | + A2 | Job2 | 2 | 402.0 ns | 6.09 ns | 1.58 ns | 1.33 | 0.00 | 2 | CatA-[Param=2]-Job2 | No | | | | | | | | | | | | - A1 | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=10]-Job1 | Yes | ^ - A2 | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 2 | CatA-[Param=10]-Job1 | No | + A1 | Job1 | 10 | 502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=10]-Job1 | Yes | ^ + A2 | Job1 | 10 | 602.0 ns | 6.09 ns | 1.58 ns | 1.20 | 0.00 | 2 | CatA-[Param=10]-Job1 | No | | | | | | | | | | | | - A1 | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=10]-Job2 | Yes | - A2 | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.14 | 0.00 | 2 | CatA-[Param=10]-Job2 | No | + A1 | Job2 | 10 | 702.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatA-[Param=10]-Job2 | Yes | + A2 | Job2 | 10 | 802.0 ns | 6.09 ns | 1.58 ns | 1.14 | 0.00 | 2 | CatA-[Param=10]-Job2 | No | | | | | | | | | | | | - B1 | Job1 | 2 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=2]-Job1 | Yes | ^ - B2 | Job1 | 2 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.11 | 0.00 | 2 | CatB-[Param=2]-Job1 | No | + B1 | Job1 | 2 | 902.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=2]-Job1 | Yes | ^ + B2 | Job1 | 2 | 1,002.0 ns | 6.09 ns | 1.58 ns | 1.11 | 0.00 | 2 | CatB-[Param=2]-Job1 | No | | | | | | | | | | | | - B1 | Job2 | 2 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=2]-Job2 | Yes | - B2 | Job2 | 2 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.09 | 0.00 | 2 | CatB-[Param=2]-Job2 | No | + B1 | Job2 | 2 | 1,102.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=2]-Job2 | Yes | + B2 | Job2 | 2 | 1,202.0 ns | 6.09 ns | 1.58 ns | 1.09 | 0.00 | 2 | CatB-[Param=2]-Job2 | No | | | | | | | | | | | | - B1 | Job1 | 10 | 1,302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=10]-Job1 | Yes | ^ - B2 | Job1 | 10 | 1,402.0 ns | 6.09 ns | 1.58 ns | 1.08 | 0.00 | 2 | CatB-[Param=10]-Job1 | No | + B1 | Job1 | 10 | 1,302.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=10]-Job1 | Yes | ^ + B2 | Job1 | 10 | 1,402.0 ns | 6.09 ns | 1.58 ns | 1.08 | 0.00 | 2 | CatB-[Param=10]-Job1 | No | | | | | | | | | | | | - B1 | Job2 | 10 | 1,502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=10]-Job2 | Yes | - B2 | Job2 | 10 | 1,602.0 ns | 6.09 ns | 1.58 ns | 1.07 | 0.00 | 2 | CatB-[Param=10]-Job2 | No | + B1 | Job2 | 10 | 1,502.0 ns | 6.09 ns | 1.58 ns | 1.00 | 0.00 | 1 | CatB-[Param=10]-Job2 | Yes | + B2 | Job2 | 10 | 1,602.0 ns | 6.09 ns | 1.58 ns | 1.07 | 0.00 | 2 | CatB-[Param=10]-Job2 | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt index a3b08eb9b9..9944b6dac1 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByJob.verified.txt @@ -8,20 +8,20 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|-----:|------------- |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | Job1 | No | ^ - Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 2 | Job1 | No | ^ - Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 3 | Job1 | No | ^ - Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 4 | Job1 | No | - Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 5 | Job1 | No | ^ - Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 6 | Job1 | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | Job1 | No | ^ + Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 2 | Job1 | No | ^ + Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 3 | Job1 | No | ^ + Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 4 | Job1 | No | + Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 5 | Job1 | No | ^ + Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 6 | Job1 | No | | | | | | | | | | - Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1 | Job2 | No | ^ - Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 2 | Job2 | No | ^ - Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 3 | Job2 | No | ^ - Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 4 | Job2 | No | - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 5 | Job2 | No | ^ - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 6 | Job2 | No | + Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 1 | Job2 | No | ^ + Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 2 | Job2 | No | ^ + Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 3 | Job2 | No | ^ + Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 4 | Job2 | No | + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 5 | Job2 | No | ^ + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 6 | Job2 | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt index 9af19b0c2f..fd34bb1c63 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByMethod.verified.txt @@ -8,21 +8,21 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|-----:|------------------------------------------------ |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | ^ - Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | - Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | ^ - Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | ^ + Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | + Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | ^ + Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Base | No | | | | | | | | | | - Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | ^ - Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | - Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | ^ - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | + Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | ^ + Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | + Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | ^ + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Foo | No | | | | | | | | | | - Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | ^ - Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | - Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | ^ - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | + Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 1 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | ^ + Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 2 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | + Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 3 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | ^ + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 4 | NoBaseline_MethodsParamsJobs_GroupByMethod.Bar | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt index 2556795c77..83dac489bd 100644 --- a/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt +++ b/tests/BenchmarkDotNet.Tests/Exporters/VerifiedFiles/MarkdownExporterVerifyTests.GroupExporterTest_NoBaseline_MethodsParamsJobs_GroupByParams.verified.txt @@ -8,20 +8,20 @@ Frequency: 2531248 Hz, Resolution: 395.0620 ns, Timer: TSC Job2 : extra output line - Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | + Method | Job | Param | Mean | Error | StdDev | Rank | LogicalGroup | Baseline | ------- |----- |------ |-----------:|--------:|--------:|-----:|------------- |--------- | - Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | [Param=2] | No | ^ - Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | [Param=2] | No | - Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 3 | [Param=2] | No | - Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 4 | [Param=2] | No | - Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 5 | [Param=2] | No | - Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 6 | [Param=2] | No | + Base | Job1 | 2 | 102.0 ns | 6.09 ns | 1.58 ns | 1 | [Param=2] | No | ^ + Base | Job2 | 2 | 202.0 ns | 6.09 ns | 1.58 ns | 2 | [Param=2] | No | + Foo | Job1 | 2 | 502.0 ns | 6.09 ns | 1.58 ns | 3 | [Param=2] | No | + Bar | Job1 | 2 | 602.0 ns | 6.09 ns | 1.58 ns | 4 | [Param=2] | No | + Foo | Job2 | 2 | 702.0 ns | 6.09 ns | 1.58 ns | 5 | [Param=2] | No | + Bar | Job2 | 2 | 802.0 ns | 6.09 ns | 1.58 ns | 6 | [Param=2] | No | | | | | | | | | | - Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 1 | [Param=10] | No | ^ - Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 2 | [Param=10] | No | - Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 3 | [Param=10] | No | - Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 4 | [Param=10] | No | - Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 5 | [Param=10] | No | - Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 6 | [Param=10] | No | + Base | Job1 | 10 | 302.0 ns | 6.09 ns | 1.58 ns | 1 | [Param=10] | No | ^ + Base | Job2 | 10 | 402.0 ns | 6.09 ns | 1.58 ns | 2 | [Param=10] | No | + Foo | Job1 | 10 | 902.0 ns | 6.09 ns | 1.58 ns | 3 | [Param=10] | No | + Bar | Job1 | 10 | 1,002.0 ns | 6.09 ns | 1.58 ns | 4 | [Param=10] | No | + Foo | Job2 | 10 | 1,102.0 ns | 6.09 ns | 1.58 ns | 5 | [Param=10] | No | + Bar | Job2 | 10 | 1,202.0 ns | 6.09 ns | 1.58 ns | 6 | [Param=10] | No | Errors: 0 diff --git a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs index b51f978edf..ce54b83bbb 100644 --- a/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs +++ b/tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs @@ -6,12 +6,15 @@ using BenchmarkDotNet.Columns; using BenchmarkDotNet.Configs; using BenchmarkDotNet.Engines; +using BenchmarkDotNet.Helpers; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using BenchmarkDotNet.Tests.Builders; using BenchmarkDotNet.Toolchains; using BenchmarkDotNet.Toolchains.Results; using BenchmarkDotNet.Validators; +using Perfolizer.Horology; +using static BenchmarkDotNet.Reports.SummaryTable.SummaryTableColumn; namespace BenchmarkDotNet.Tests.Mocks { @@ -33,40 +36,49 @@ public static Summary CreateSummary(Type benchmarkType) } public static Summary CreateSummary(IConfig config) => new Summary( - "MockSummary", - CreateReports(config), - new HostEnvironmentInfoBuilder().WithoutDotNetSdkVersion().Build(), - string.Empty, - string.Empty, - TimeSpan.FromMinutes(1), - config.CultureInfo, - ImmutableArray.Empty, - ImmutableArray.Empty); + "MockSummary", + CreateReports(config), + new HostEnvironmentInfoBuilder().WithoutDotNetSdkVersion().Build(), + string.Empty, + string.Empty, + TimeSpan.FromMinutes(1), + config.CultureInfo, + ImmutableArray.Empty, + ImmutableArray.Empty, + config.SummaryStyle); + public static Summary CreateSummary(IConfig config, bool hugeSd, Metric[] metrics) => CreateSummary(config, hugeSd, metrics); public static Summary CreateSummary(IConfig config, bool hugeSd, Metric[] metrics) => new Summary( - "MockSummary", - CreateBenchmarks(config).Select(b => CreateReport(b, hugeSd, metrics)).ToImmutableArray(), - new HostEnvironmentInfoBuilder().Build(), - string.Empty, - string.Empty, - TimeSpan.FromMinutes(1), - TestCultureInfo.Instance, - ImmutableArray.Empty, - ImmutableArray.Empty); + "MockSummary", + CreateBenchmarks(config).Select(b => CreateReport(b, hugeSd, metrics)).ToImmutableArray(), + new HostEnvironmentInfoBuilder().Build(), + string.Empty, + string.Empty, + TimeSpan.FromMinutes(1), + TestCultureInfo.Instance, + ImmutableArray.Empty, + ImmutableArray.Empty); public static Summary CreateSummary(IConfig config, bool hugeSd, Func metricsBuilder) => new Summary( - "MockSummary", - CreateBenchmarks(config).Select(b => CreateReport(b, hugeSd, metricsBuilder(b))).ToImmutableArray(), - new HostEnvironmentInfoBuilder().Build(), - string.Empty, - string.Empty, - TimeSpan.FromMinutes(1), - TestCultureInfo.Instance, - ImmutableArray.Empty, - ImmutableArray.Empty); + "MockSummary", + CreateBenchmarks(config).Select(b => CreateReport(b, hugeSd, metricsBuilder(b))).ToImmutableArray(), + new HostEnvironmentInfoBuilder().Build(), + string.Empty, + string.Empty, + TimeSpan.FromMinutes(1), + TestCultureInfo.Instance, + ImmutableArray.Empty, + ImmutableArray.Empty); + + public static SummaryStyle CreateSummaryStyle(bool printUnitsInHeader = false, bool printUnitsInContent = true, bool printZeroValuesInContent = false, + SizeUnit sizeUnit = null, TimeUnit timeUnit = null, TextJustification textColumnJustification = TextJustification.Left, + TextJustification numericColumnJustification = TextJustification.Left) + => new SummaryStyle(DefaultCultureInfo.Instance, printUnitsInHeader, sizeUnit, timeUnit, printUnitsInContent: printUnitsInContent, + printZeroValuesInContent: printZeroValuesInContent, textColumnJustification: textColumnJustification, + numericColumnJustification: numericColumnJustification); private static ImmutableArray CreateReports(IConfig config) => CreateBenchmarks(config).Select(CreateSimpleReport).ToImmutableArray(); diff --git a/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs b/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs index f33b8604e2..ebea88b5ad 100644 --- a/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs +++ b/tests/BenchmarkDotNet.Tests/Reports/SummaryTableTests.cs @@ -65,6 +65,28 @@ public void TextColumnIsLeftJustified() Assert.Equal(SummaryTable.SummaryTableColumn.TextJustification.Left, table.Columns.First(c => c.Header == "Param").Justify); } + [Fact] + public void NumericColumnWithLeftJustification() + { + var config = ManualConfig.Create(DefaultConfig.Instance).AddColumn(StatisticColumn.Mean); + config.SummaryStyle = MockFactory.CreateSummaryStyle(numericColumnJustification: SummaryTable.SummaryTableColumn.TextJustification.Left); + var summary = MockFactory.CreateSummary(config); + var table = new SummaryTable(summary); + + Assert.Equal(SummaryTable.SummaryTableColumn.TextJustification.Left, table.Columns.First(c => c.Header == "Mean").Justify); + } + + [Fact] + public void TextColumnWithRightJustification() + { + var config = ManualConfig.Create(DefaultConfig.Instance).AddColumn(new ParamColumn("Param")); + config.SummaryStyle = MockFactory.CreateSummaryStyle(textColumnJustification: SummaryTable.SummaryTableColumn.TextJustification.Right); + var summary = MockFactory.CreateSummary(config); + var table = new SummaryTable(summary); + + Assert.Equal(SummaryTable.SummaryTableColumn.TextJustification.Right, table.Columns.First(c => c.Header == "Param").Justify); + } + [Fact] // Issue #1070 public void CustomOrdererIsSupported() {