Skip to content

Commit 484133c

Browse files
authored
simplify the design (#2268)
1 parent 0a218ec commit 484133c

File tree

6 files changed

+20
-63
lines changed

6 files changed

+20
-63
lines changed

tests/BenchmarkDotNet.Tests/Columns/RatioColumnTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Linq;
3+
using System.Xml.Linq;
34
using BenchmarkDotNet.Attributes;
45
using BenchmarkDotNet.Reports;
56
using BenchmarkDotNet.Tests.Mocks;
@@ -21,13 +22,12 @@ public RatioColumnTest(ITestOutputHelper output)
2122
[Fact]
2223
public void RatioColumnTest01()
2324
{
24-
var measurer = MockMeasurer.Create(name => name switch
25+
var summary = MockRunner.Run<BenchmarkClass>(output, name => name switch
2526
{
2627
"Foo" => new double[] { 2, 2, 2 },
2728
"Bar" => new double[] { 4, 4, 4 },
2829
_ => throw new InvalidOperationException()
2930
});
30-
var summary = MockRunner.Run<BenchmarkClass>(output, measurer);
3131

3232
var ratioColumn = summary.GetColumns().FirstOrDefault(column => column.ColumnName == "Ratio");
3333
Assert.NotNull(ratioColumn);

tests/BenchmarkDotNet.Tests/Mocks/MockRunner.cs

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
using BenchmarkDotNet.Configs;
2+
using BenchmarkDotNet.Engines;
23
using BenchmarkDotNet.Exporters;
34
using BenchmarkDotNet.Jobs;
45
using BenchmarkDotNet.Loggers;
56
using BenchmarkDotNet.Reports;
67
using BenchmarkDotNet.Running;
78
using BenchmarkDotNet.Tests.Mocks.Toolchain;
9+
using System;
10+
using System.Collections.Generic;
11+
using System.Linq;
812
using Xunit.Abstractions;
913

1014
namespace BenchmarkDotNet.Tests.Mocks
1115
{
1216
public static class MockRunner
1317
{
14-
public static Summary Run<T>(ITestOutputHelper output, IMockMeasurer measurer)
18+
public static Summary Run<T>(ITestOutputHelper output, Func<string, double[]> measurer)
19+
=> Run<T>(output, benchmarkCase => measurer(benchmarkCase.Descriptor.WorkloadMethod.Name)
20+
.Select((value, i) => new Measurement(1, IterationMode.Workload, IterationStage.Result, i, 1, value))
21+
.ToList());
22+
23+
public static Summary Run<T>(ITestOutputHelper output, Func<BenchmarkCase, List<Measurement>> measurer)
1524
{
1625
var job = new Job("MockJob")
1726
{

tests/BenchmarkDotNet.Tests/Mocks/Toolchain/IMockMeasurer.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurer.cs

Lines changed: 0 additions & 27 deletions
This file was deleted.

tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurerAttribute.cs

Lines changed: 0 additions & 15 deletions
This file was deleted.

tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockToolchain.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
1+
using System;
12
using System.Collections.Generic;
23
using System.Collections.Immutable;
34
using BenchmarkDotNet.Characteristics;
45
using BenchmarkDotNet.Loggers;
6+
using BenchmarkDotNet.Reports;
57
using BenchmarkDotNet.Running;
68
using BenchmarkDotNet.Toolchains;
79
using BenchmarkDotNet.Toolchains.Parameters;
@@ -12,14 +14,13 @@ namespace BenchmarkDotNet.Tests.Mocks.Toolchain
1214
{
1315
public class MockToolchain : IToolchain
1416
{
15-
private readonly IMockMeasurer measurer;
16-
17-
public MockToolchain(IMockMeasurer measurer) => this.measurer = measurer;
17+
public MockToolchain(Func<BenchmarkCase, List<Measurement>> measurer)
18+
=> Executor = new MockExecutor(measurer);
1819

1920
public string Name => nameof(MockToolchain);
2021
public IGenerator Generator => new MockGenerator();
2122
public IBuilder Builder => new MockBuilder();
22-
public IExecutor Executor => new MockExecutor(measurer);
23+
public IExecutor Executor { get; private set; }
2324
public bool IsInProcess => false;
2425
public IEnumerable<ValidationError> Validate(BenchmarkCase benchmarkCase, IResolver resolver) => ImmutableArray<ValidationError>.Empty;
2526

@@ -38,11 +39,11 @@ private class MockBuilder : IBuilder
3839

3940
private class MockExecutor : IExecutor
4041
{
41-
private readonly IMockMeasurer mockMeasurer;
42+
private readonly Func<BenchmarkCase, List<Measurement>> measurer;
4243

43-
public MockExecutor(IMockMeasurer mockMeasurer) => this.mockMeasurer = mockMeasurer;
44+
public MockExecutor(Func<BenchmarkCase, List<Measurement>> measurer) => this.measurer = measurer;
4445

45-
public ExecuteResult Execute(ExecuteParameters executeParameters) => new (mockMeasurer.Measure(executeParameters.BenchmarkCase));
46+
public ExecuteResult Execute(ExecuteParameters executeParameters) => new (measurer(executeParameters.BenchmarkCase));
4647
}
4748
}
4849
}

0 commit comments

Comments
 (0)