diff --git a/tests/BenchmarkDotNet.Tests/Columns/RatioColumnTest.cs b/tests/BenchmarkDotNet.Tests/Columns/RatioColumnTest.cs index 6641411e40..319d03741a 100644 --- a/tests/BenchmarkDotNet.Tests/Columns/RatioColumnTest.cs +++ b/tests/BenchmarkDotNet.Tests/Columns/RatioColumnTest.cs @@ -1,5 +1,6 @@ using System; using System.Linq; +using System.Xml.Linq; using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Tests.Mocks; @@ -21,13 +22,12 @@ public RatioColumnTest(ITestOutputHelper output) [Fact] public void RatioColumnTest01() { - var measurer = MockMeasurer.Create(name => name switch + var summary = MockRunner.Run(output, name => name switch { "Foo" => new double[] { 2, 2, 2 }, "Bar" => new double[] { 4, 4, 4 }, _ => throw new InvalidOperationException() }); - var summary = MockRunner.Run(output, measurer); var ratioColumn = summary.GetColumns().FirstOrDefault(column => column.ColumnName == "Ratio"); Assert.NotNull(ratioColumn); diff --git a/tests/BenchmarkDotNet.Tests/Mocks/MockRunner.cs b/tests/BenchmarkDotNet.Tests/Mocks/MockRunner.cs index 9306ae9c96..c8a2a8e42b 100644 --- a/tests/BenchmarkDotNet.Tests/Mocks/MockRunner.cs +++ b/tests/BenchmarkDotNet.Tests/Mocks/MockRunner.cs @@ -1,17 +1,26 @@ using BenchmarkDotNet.Configs; +using BenchmarkDotNet.Engines; using BenchmarkDotNet.Exporters; using BenchmarkDotNet.Jobs; using BenchmarkDotNet.Loggers; using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using BenchmarkDotNet.Tests.Mocks.Toolchain; +using System; +using System.Collections.Generic; +using System.Linq; using Xunit.Abstractions; namespace BenchmarkDotNet.Tests.Mocks { public static class MockRunner { - public static Summary Run(ITestOutputHelper output, IMockMeasurer measurer) + public static Summary Run(ITestOutputHelper output, Func measurer) + => Run(output, benchmarkCase => measurer(benchmarkCase.Descriptor.WorkloadMethod.Name) + .Select((value, i) => new Measurement(1, IterationMode.Workload, IterationStage.Result, i, 1, value)) + .ToList()); + + public static Summary Run(ITestOutputHelper output, Func> measurer) { var job = new Job("MockJob") { diff --git a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/IMockMeasurer.cs b/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/IMockMeasurer.cs deleted file mode 100644 index f4ede0a3d6..0000000000 --- a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/IMockMeasurer.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System.Collections.Generic; -using BenchmarkDotNet.Reports; -using BenchmarkDotNet.Running; - -namespace BenchmarkDotNet.Tests.Mocks.Toolchain -{ - public interface IMockMeasurer - { - List Measure(BenchmarkCase benchmarkCase); - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurer.cs b/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurer.cs deleted file mode 100644 index 601583f064..0000000000 --- a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurer.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using BenchmarkDotNet.Engines; -using BenchmarkDotNet.Reports; -using BenchmarkDotNet.Running; - -namespace BenchmarkDotNet.Tests.Mocks.Toolchain -{ - public class MockMeasurer : IMockMeasurer - { - private readonly Func> measure; - - private MockMeasurer(Func> measure) => this.measure = measure; - - public List Measure(BenchmarkCase benchmarkCase) => measure(benchmarkCase); - - private static List CreateFromValues(double[] values) => values - .Select((value, i) => new Measurement(1, IterationMode.Workload, IterationStage.Result, i, 1, value)) - .ToList(); - - public static IMockMeasurer Create(Func> measure) => new MockMeasurer(measure); - - public static IMockMeasurer Create(Func measure) => - new MockMeasurer(benchmarkCase => CreateFromValues(measure(benchmarkCase.Descriptor.WorkloadMethod.Name))); - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurerAttribute.cs b/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurerAttribute.cs deleted file mode 100644 index 5e484c6565..0000000000 --- a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockMeasurerAttribute.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; - -namespace BenchmarkDotNet.Tests.Mocks.Toolchain -{ - [AttributeUsage(AttributeTargets.Class)] - public class MockMeasurerAttribute : Attribute - { - public Type MockMeasurerType { get; } - - public MockMeasurerAttribute(Type mockMeasurerType) - { - MockMeasurerType = mockMeasurerType; - } - } -} \ No newline at end of file diff --git a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockToolchain.cs b/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockToolchain.cs index 2a59560c8d..c25929854e 100644 --- a/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockToolchain.cs +++ b/tests/BenchmarkDotNet.Tests/Mocks/Toolchain/MockToolchain.cs @@ -1,7 +1,9 @@ +using System; using System.Collections.Generic; using System.Collections.Immutable; using BenchmarkDotNet.Characteristics; using BenchmarkDotNet.Loggers; +using BenchmarkDotNet.Reports; using BenchmarkDotNet.Running; using BenchmarkDotNet.Toolchains; using BenchmarkDotNet.Toolchains.Parameters; @@ -12,14 +14,13 @@ namespace BenchmarkDotNet.Tests.Mocks.Toolchain { public class MockToolchain : IToolchain { - private readonly IMockMeasurer measurer; - - public MockToolchain(IMockMeasurer measurer) => this.measurer = measurer; + public MockToolchain(Func> measurer) + => Executor = new MockExecutor(measurer); public string Name => nameof(MockToolchain); public IGenerator Generator => new MockGenerator(); public IBuilder Builder => new MockBuilder(); - public IExecutor Executor => new MockExecutor(measurer); + public IExecutor Executor { get; private set; } public bool IsInProcess => false; public IEnumerable Validate(BenchmarkCase benchmarkCase, IResolver resolver) => ImmutableArray.Empty; @@ -38,11 +39,11 @@ private class MockBuilder : IBuilder private class MockExecutor : IExecutor { - private readonly IMockMeasurer mockMeasurer; + private readonly Func> measurer; - public MockExecutor(IMockMeasurer mockMeasurer) => this.mockMeasurer = mockMeasurer; + public MockExecutor(Func> measurer) => this.measurer = measurer; - public ExecuteResult Execute(ExecuteParameters executeParameters) => new (mockMeasurer.Measure(executeParameters.BenchmarkCase)); + public ExecuteResult Execute(ExecuteParameters executeParameters) => new (measurer(executeParameters.BenchmarkCase)); } } } \ No newline at end of file