Skip to content

Commit 70e7867

Browse files
committed
Add tests
1 parent 62776fd commit 70e7867

File tree

8 files changed

+137
-8
lines changed

8 files changed

+137
-8
lines changed

tests/BenchmarkDotNet.IntegrationTests/ExporterIOTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ private Summary GetMockSummary(string resultsDirectoryPath, IConfig config, para
130130
totalTime: System.TimeSpan.Zero,
131131
cultureInfo: TestCultureInfo.Instance,
132132
validationErrors: ImmutableArray<ValidationError>.Empty,
133-
columnHidingRules: ImmutableArray<IColumnHidingRules>.Empty
133+
columnHidingRules: ImmutableArray<IColumnHidingRule>.Empty
134134
);
135135
}
136136

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using System.Linq;
2+
using BenchmarkDotNet.Attributes;
3+
using BenchmarkDotNet.Columns;
4+
using BenchmarkDotNet.Rules;
5+
using Xunit;
6+
using Xunit.Abstractions;
7+
8+
namespace BenchmarkDotNet.IntegrationTests
9+
{
10+
public class HideColumnsTests : BenchmarkTestExecutor
11+
{
12+
public HideColumnsTests(ITestOutputHelper output) : base(output) { }
13+
14+
[Fact]
15+
public void HideColumnsSupportsHidingByNameByEnumByInterface()
16+
{
17+
var config = new SingleRunFastConfig().HideColumns(new ColumnHidingByParamRule());
18+
var summary = CanExecute<HideColumnsByNameAndEnum>(config);
19+
20+
Assert.Contains(summary.Table.Columns, c => c is { Header: "Job", Hidden: true });
21+
Assert.Contains(summary.Table.Columns, c => c is { Header: "N", Hidden: true });
22+
Assert.Contains(summary.Table.Columns, c => c is { Header: "Mean", Hidden: true });
23+
Assert.Contains(summary.Table.Columns, c => c is { Header: "Error", Hidden: true });
24+
25+
Assert.Contains(summary.Table.Columns, c => c is { Header: "Method", NeedToShow: true, Hidden: false });
26+
27+
Assert.Equal(1, summary.Table.Columns.Count(c => c.NeedToShow));
28+
Assert.Equal(4, summary.Table.Columns.Count(c => c.Hidden));
29+
}
30+
31+
private class ColumnHidingByParamRule : IColumnHidingRule
32+
{
33+
public bool NeedToHide(IColumn column) => column is ParamColumn;
34+
}
35+
36+
[HideColumns("Job")]
37+
[HideColumns(Column.Mean, Column.Error)]
38+
public class HideColumnsByNameAndEnum
39+
{
40+
[Params(42)]
41+
public int N;
42+
43+
[Benchmark]
44+
public void Benchmark() { }
45+
}
46+
}
47+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using BenchmarkDotNet.Columns;
5+
using BenchmarkDotNet.Helpers;
6+
using BenchmarkDotNet.Rules;
7+
using Xunit;
8+
9+
namespace BenchmarkDotNet.Tests
10+
{
11+
public class ColumnEnumHelperTests
12+
{
13+
[Fact]
14+
public void ColumnsHiddenCorrectly()
15+
{
16+
VerifyHiding(Column.Namespace, TargetMethodColumn.Namespace);
17+
VerifyHiding(Column.Type, TargetMethodColumn.Type);
18+
VerifyHiding(Column.Method, TargetMethodColumn.Method);
19+
VerifyHiding(Column.Mean, StatisticColumn.Mean);
20+
VerifyHiding(Column.Error, StatisticColumn.Error);
21+
VerifyHiding(Column.StdDev, StatisticColumn.StdDev);
22+
VerifyHiding(Column.Median, StatisticColumn.Median);
23+
VerifyHiding(Column.BaselineRatio, BaselineRatioColumn.RatioMean);
24+
VerifyHiding(Column.BaselineRatioSD, BaselineRatioColumn.RatioStdDev);
25+
VerifyHiding(Column.BaselineAllocRatio, new BaselineAllocationRatioColumn());
26+
}
27+
28+
[Theory]
29+
[InlineData(Column.Job, "Job")]
30+
[InlineData(Column.Runtime, "Runtime")]
31+
[InlineData(Column.Toolchain, "Toolchain")]
32+
public void JobCharacteristicColumnsHiddenCorrectly(Column @enum, string name)
33+
{
34+
var column = JobCharacteristicColumn.AllColumns.First(c => c.ColumnName == name);
35+
VerifyHiding(@enum, column);
36+
}
37+
38+
private static void VerifyHiding(Column @enum, IColumn column)
39+
{
40+
bool needToHide = ColumnEnumHelper.ExtractRules(new[] { @enum }).Any(r => r.NeedToHide(column));
41+
Assert.True(needToHide);
42+
}
43+
44+
[Fact]
45+
public void NoneColumnsHandledCorrectly()
46+
{
47+
var nones = new Column[] { Column.None, Column.None, Column.None };
48+
49+
var rules = ColumnEnumHelper.ExtractRules(nones);
50+
51+
Assert.Empty(rules);
52+
}
53+
54+
[Fact]
55+
public void AllColumnsTested()
56+
{
57+
var columns = GetAllEnumColumns();
58+
59+
var notTestedColumns = columns.Except(new[]
60+
{
61+
Column.None,
62+
Column.Namespace,
63+
Column.Type,
64+
Column.Method,
65+
Column.Job,
66+
Column.Runtime,
67+
Column.Toolchain,
68+
Column.Mean,
69+
Column.Error,
70+
Column.StdDev,
71+
Column.Median,
72+
Column.BaselineRatio,
73+
Column.BaselineRatioSD,
74+
Column.BaselineAllocRatio
75+
});
76+
77+
Assert.Empty(notTestedColumns);
78+
}
79+
80+
private static IEnumerable<Column> GetAllEnumColumns() => Enum.GetValues(typeof(Column)).Cast<Column>();
81+
}
82+
}

tests/BenchmarkDotNet.Tests/Mocks/MockFactory.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public static Summary CreateSummary(Type benchmarkType)
2929
TimeSpan.FromMinutes(1),
3030
TestCultureInfo.Instance,
3131
ImmutableArray<ValidationError>.Empty,
32-
ImmutableArray<IColumnHidingRules>.Empty);
32+
ImmutableArray<IColumnHidingRule>.Empty);
3333
}
3434

3535
public static Summary CreateSummary(IConfig config) => new Summary(
@@ -41,7 +41,7 @@ public static Summary CreateSummary(Type benchmarkType)
4141
TimeSpan.FromMinutes(1),
4242
config.CultureInfo,
4343
ImmutableArray<ValidationError>.Empty,
44-
ImmutableArray<IColumnHidingRules>.Empty);
44+
ImmutableArray<IColumnHidingRule>.Empty);
4545

4646
public static Summary CreateSummary(IConfig config, bool hugeSd, Metric[] metrics)
4747
=> CreateSummary<MockBenchmarkClass>(config, hugeSd, metrics);
@@ -55,7 +55,7 @@ public static Summary CreateSummary(IConfig config, bool hugeSd, Metric[] metric
5555
TimeSpan.FromMinutes(1),
5656
TestCultureInfo.Instance,
5757
ImmutableArray<ValidationError>.Empty,
58-
ImmutableArray<IColumnHidingRules>.Empty);
58+
ImmutableArray<IColumnHidingRule>.Empty);
5959

6060
private static ImmutableArray<BenchmarkReport> CreateReports(IConfig config)
6161
=> CreateBenchmarks<MockBenchmarkClass>(config).Select(CreateSimpleReport).ToImmutableArray();

tests/BenchmarkDotNet.Tests/Order/DefaultOrdererTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ namespace BenchmarkDotNet.Tests.Order
1919
public class DefaultOrdererTests
2020
{
2121
private static Summary CreateMockSummary() => new("", ImmutableArray<BenchmarkReport>.Empty, HostEnvironmentInfo.GetCurrent(),
22-
"", "", TimeSpan.Zero, CultureInfo.InvariantCulture, ImmutableArray<ValidationError>.Empty, ImmutableArray<IColumnHidingRules>.Empty);
22+
"", "", TimeSpan.Zero, CultureInfo.InvariantCulture, ImmutableArray<ValidationError>.Empty, ImmutableArray<IColumnHidingRule>.Empty);
2323

2424
private static BenchmarkCase CreateBenchmarkCase(string category, int parameter, params BenchmarkLogicalGroupRule[] rules) => new(
2525
new Descriptor(null, null, categories: new[] { category }),

tests/BenchmarkDotNet.Tests/Reports/RatioPrecisionTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ private Summary CreateSummary(int[] values)
7474
TimeSpan.FromMinutes(1),
7575
TestCultureInfo.Instance,
7676
ImmutableArray<ValidationError>.Empty,
77-
ImmutableArray<IColumnHidingRules>.Empty);
77+
ImmutableArray<IColumnHidingRule>.Empty);
7878
MarkdownExporter.Default.ExportToLog(summary, logger);
7979
output.WriteLine(logger.GetLog());
8080
return summary;

tests/BenchmarkDotNet.Tests/Reports/RatioStyleTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ private Summary CreateSummary(int[] values, RatioStyle ratioStyle, int noise)
9595
TimeSpan.FromMinutes(1),
9696
TestCultureInfo.Instance,
9797
ImmutableArray<ValidationError>.Empty,
98-
ImmutableArray<IColumnHidingRules>.Empty);
98+
ImmutableArray<IColumnHidingRule>.Empty);
9999
MarkdownExporter.Default.ExportToLog(summary, logger);
100100
output.WriteLine(logger.GetLog());
101101
return summary;

tests/BenchmarkDotNet.Tests/Reports/SummaryTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ private static BenchmarkReport CreateSuccessReport(BenchmarkCase benchmark)
7575
private static Summary CreateSummary(IList<BenchmarkReport> reports)
7676
{
7777
HostEnvironmentInfo hostEnvironmentInfo = new HostEnvironmentInfoBuilder().Build();
78-
return new Summary("MockSummary", reports.ToImmutableArray(), hostEnvironmentInfo, string.Empty, string.Empty, TimeSpan.FromMinutes(1.0), TestCultureInfo.Instance, ImmutableArray<ValidationError>.Empty, ImmutableArray<IColumnHidingRules>.Empty);
78+
return new Summary("MockSummary", reports.ToImmutableArray(), hostEnvironmentInfo, string.Empty, string.Empty, TimeSpan.FromMinutes(1.0), TestCultureInfo.Instance, ImmutableArray<ValidationError>.Empty, ImmutableArray<IColumnHidingRule>.Empty);
7979
}
8080

8181
public class MockBenchmarkClass

0 commit comments

Comments
 (0)