diff --git a/.github/workflows/speed-comparison.yml b/.github/workflows/speed-comparison.yml
index 96ae2d33e2..d2adcb9346 100644
--- a/.github/workflows/speed-comparison.yml
+++ b/.github/workflows/speed-comparison.yml
@@ -8,11 +8,7 @@ on:
jobs:
build-test-artifacts:
environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }}
- strategy:
- matrix:
- os: [ubuntu-latest, windows-latest, macos-latest]
- fail-fast: false
- runs-on: ${{ matrix.os }}
+ runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
@@ -34,13 +30,13 @@ jobs:
- name: Publish TUnit AOT
run: |
- dotnet publish -c Release -p:TestFramework=TUNIT -p:Aot=true --runtime ${{ matrix.os == 'windows-latest' && 'win-x64' || matrix.os == 'ubuntu-latest' && 'linux-x64' || 'osx-arm64' }} --output bin/Release-TUNIT-AOT/net10.0
+ dotnet publish -c Release -p:TestFramework=TUNIT -p:Aot=true --use-current-runtime --output bin/Release-TUNIT-AOT/net10.0
working-directory: "tools/speed-comparison/UnifiedTests"
- name: Upload Build Artifacts
uses: actions/upload-artifact@v5
with:
- name: test-builds-${{ matrix.os }}
+ name: test-builds-ubuntu
path: tools/speed-comparison/UnifiedTests/bin/
retention-days: 1
@@ -49,12 +45,11 @@ jobs:
environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }}
strategy:
matrix:
- os: [ubuntu-latest, windows-latest, macos-latest]
- class: [DataDrivenTests, AsyncTests, ScaleTests, MatrixTests, LifecycleTests, MassiveParallelTests]
+ class: [DataDrivenTests, AsyncTests, ScaleTests, MatrixTests, MassiveParallelTests]
fail-fast: false
- runs-on: ${{ matrix.os }}
+ runs-on: ubuntu-latest
concurrency:
- group: "speed-comparison-run-time-${{matrix.os}}-${{matrix.class}}"
+ group: "speed-comparison-run-time-${{matrix.class}}"
cancel-in-progress: true
steps:
@@ -70,11 +65,10 @@ jobs:
- name: Download Build Artifacts
uses: actions/download-artifact@v6
with:
- name: test-builds-${{ matrix.os }}
+ name: test-builds-ubuntu
path: tools/speed-comparison/UnifiedTests/bin/
- - name: Set Execute Permissions (Linux/macOS)
- if: runner.os != 'Windows'
+ - name: Set Execute Permissions
run: |
find tools/speed-comparison/UnifiedTests/bin -type f -name "UnifiedTests" -exec chmod +x {} \; 2>/dev/null || true
find tools/speed-comparison/UnifiedTests/bin -type f -name "xunit.v3.runner.console" -exec chmod +x {} \; 2>/dev/null || true
@@ -90,21 +84,16 @@ jobs:
uses: actions/upload-artifact@v5
if: always()
with:
- name: ${{ matrix.os }}_markdown_run_time_${{ matrix.class }}
+ name: ubuntu_markdown_run_time_${{ matrix.class }}
path: |
**/BenchmarkDotNet.Artifacts/**
build-time-benchmarks:
environment: ${{ github.ref == 'refs/heads/main' && 'Production' || 'Pull Requests' }}
- strategy:
- matrix:
- os: [ubuntu-latest, windows-latest, macos-latest]
- # framework: [net8.0, net9.0]
- fail-fast: false
- runs-on: ${{ matrix.os }}
+ runs-on: ubuntu-latest
concurrency:
- group: "speed-comparison-build-time-${{matrix.os}}"
+ group: "speed-comparison-build-time"
cancel-in-progress: true
steps:
@@ -130,7 +119,7 @@ jobs:
uses: actions/upload-artifact@v5
if: always()
with:
- name: ${{ matrix.os }}_markdown_build_time
+ name: ubuntu_markdown_build_time
path: |
**/BenchmarkDotNet.Artifacts/**
diff --git a/Directory.Packages.props b/Directory.Packages.props
index e903eca582..b7e54df848 100644
--- a/Directory.Packages.props
+++ b/Directory.Packages.props
@@ -83,9 +83,9 @@
-
-
-
+
+
+
diff --git a/TUnit.Engine/Scheduling/TestScheduler.cs b/TUnit.Engine/Scheduling/TestScheduler.cs
index 4fe130f97a..0d07540594 100644
--- a/TUnit.Engine/Scheduling/TestScheduler.cs
+++ b/TUnit.Engine/Scheduling/TestScheduler.cs
@@ -316,14 +316,46 @@ private async Task WaitForTasksWithFailFastHandling(IEnumerable tasks, Can
private static int GetMaxParallelism(ILogger logger, ICommandLineOptions commandLineOptions)
{
- if (!commandLineOptions.TryGetOptionArgumentList(
+ // Check command line argument first (highest priority)
+ if (commandLineOptions.TryGetOptionArgumentList(
MaximumParallelTestsCommandProvider.MaximumParallelTests,
- out var args) || args.Length <= 0 || !int.TryParse(args[0], out var maxParallelTests) || maxParallelTests <= 0)
+ out var args) && args.Length > 0 && int.TryParse(args[0], out var maxParallelTests))
{
- return int.MaxValue;
+ if (maxParallelTests == 0)
+ {
+ // 0 means unlimited (backwards compat for advanced users)
+ logger.LogDebug("Maximum parallel tests: unlimited (from command line)");
+ return int.MaxValue;
+ }
+
+ if (maxParallelTests > 0)
+ {
+ logger.LogDebug($"Maximum parallel tests limit set to {maxParallelTests} (from command line)");
+ return maxParallelTests;
+ }
+ }
+
+ // Check environment variable (second priority)
+ if (Environment.GetEnvironmentVariable("TUNIT_MAX_PARALLEL_TESTS") is string envVar
+ && int.TryParse(envVar, out var envLimit))
+ {
+ if (envLimit == 0)
+ {
+ logger.LogDebug("Maximum parallel tests: unlimited (from TUNIT_MAX_PARALLEL_TESTS environment variable)");
+ return int.MaxValue;
+ }
+
+ if (envLimit > 0)
+ {
+ logger.LogDebug($"Maximum parallel tests limit set to {envLimit} (from TUNIT_MAX_PARALLEL_TESTS environment variable)");
+ return envLimit;
+ }
}
- logger.LogDebug($"Maximum parallel tests limit set to {maxParallelTests}");
- return maxParallelTests;
+ // Default: 4x CPU cores (balances CPU-bound and I/O-bound tests)
+ // This prevents resource exhaustion (DB connections, memory, etc.) while allowing I/O overlap
+ var defaultLimit = Environment.ProcessorCount * 4;
+ logger.LogDebug($"Maximum parallel tests limit defaulting to {defaultLimit} ({Environment.ProcessorCount} processors * 4)");
+ return defaultLimit;
}
}
diff --git a/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj b/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj
index 8e18828a2d..d99ea78447 100644
--- a/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj
+++ b/TUnit.Templates/content/TUnit.AspNet.FSharp/TestProject/TestProject.fsproj
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj b/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj
index ba023fd72f..a5d0584afe 100644
--- a/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj
+++ b/TUnit.Templates/content/TUnit.AspNet/TestProject/TestProject.csproj
@@ -9,7 +9,7 @@
-
+
diff --git a/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj b/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj
index db66778c00..095cfce880 100644
--- a/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj
+++ b/TUnit.Templates/content/TUnit.Aspire.Starter/ExampleNamespace.TestProject/ExampleNamespace.TestProject.csproj
@@ -11,7 +11,7 @@
-
+
diff --git a/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj b/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj
index 75439e4d14..778697668b 100644
--- a/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj
+++ b/TUnit.Templates/content/TUnit.Aspire.Test/ExampleNamespace.csproj
@@ -10,7 +10,7 @@
-
+
diff --git a/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj b/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj
index c739525068..86b4ed7c86 100644
--- a/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj
+++ b/TUnit.Templates/content/TUnit.FSharp/TestProject.fsproj
@@ -10,8 +10,8 @@
-
-
+
+
diff --git a/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj b/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj
index 077fb150fd..2f9dca5c37 100644
--- a/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj
+++ b/TUnit.Templates/content/TUnit.Playwright/TestProject.csproj
@@ -8,7 +8,7 @@
-
+
diff --git a/TUnit.Templates/content/TUnit.VB/TestProject.vbproj b/TUnit.Templates/content/TUnit.VB/TestProject.vbproj
index 7076083044..5aaf9813b0 100644
--- a/TUnit.Templates/content/TUnit.VB/TestProject.vbproj
+++ b/TUnit.Templates/content/TUnit.VB/TestProject.vbproj
@@ -8,6 +8,6 @@
-
+
diff --git a/TUnit.Templates/content/TUnit/TestProject.csproj b/TUnit.Templates/content/TUnit/TestProject.csproj
index 53f327da27..dcdb0ac86c 100644
--- a/TUnit.Templates/content/TUnit/TestProject.csproj
+++ b/TUnit.Templates/content/TUnit/TestProject.csproj
@@ -8,7 +8,7 @@
-
+
\ No newline at end of file
diff --git a/tools/speed-comparison/Tests.Benchmark/BenchmarkConfig.cs b/tools/speed-comparison/Tests.Benchmark/BenchmarkConfig.cs
index 5c0eff4abc..bf8b669662 100644
--- a/tools/speed-comparison/Tests.Benchmark/BenchmarkConfig.cs
+++ b/tools/speed-comparison/Tests.Benchmark/BenchmarkConfig.cs
@@ -4,6 +4,7 @@
using BenchmarkDotNet.Exporters;
using BenchmarkDotNet.Jobs;
using BenchmarkDotNet.Loggers;
+using Perfolizer.Mathematics.OutlierDetection;
namespace Tests.Benchmark;
@@ -11,7 +12,13 @@ public class BenchmarkConfig : ManualConfig
{
public BenchmarkConfig()
{
- AddJob(Job.Default.WithRuntime(CoreRuntime.Core10_0));
+ var job = Job.RyuJitX64
+ .WithRuntime(CoreRuntime.Core10_0)
+ .WithGcConcurrent(true)
+ .WithGcServer(true)
+ .DontEnforcePowerPlan();
+
+ AddJob(job);
AddLogger(ConsoleLogger.Default);
AddExporter(MarkdownExporter.GitHub);
diff --git a/tools/speed-comparison/UnifiedTests/ConstructorCostTests.cs b/tools/speed-comparison/UnifiedTests/ConstructorCostTests.cs
deleted file mode 100644
index e7be0aa25c..0000000000
--- a/tools/speed-comparison/UnifiedTests/ConstructorCostTests.cs
+++ /dev/null
@@ -1,526 +0,0 @@
-using System.Text.Json;
-using System.Threading.Tasks;
-
-namespace UnifiedTests;
-
-///
-/// Tests measuring the overhead of expensive constructor initialization.
-/// All tests in this class share the same constructor, allowing measurement
-/// of per-class initialization cost amortized across multiple tests.
-///
-#if MSTEST
-[TestClass]
-public class ConstructorCostTests
-#elif NUNIT
-[TestFixture]
-public class ConstructorCostTests
-#elif XUNIT || XUNIT3
-public class ConstructorCostTests
-#else
-public class ConstructorCostTests
-#endif
-{
- private readonly Dictionary _configCache;
- private readonly List _processedData;
- private readonly HashSet _indexLookup;
- private readonly string _serializedConfig;
- private readonly int _totalRecords;
-
- public ConstructorCostTests()
- {
- // Simulate expensive constructor initialization
- // Realistic work: JSON parsing, collection building, computation
-
- // Build configuration cache (simulates loading config)
- _configCache = [];
- for (var i = 0; i < 50; i++)
- {
- var config = new
- {
- Id = i,
- Name = $"Config_{i}",
- Enabled = i % 2 == 0,
- Priority = i * 10,
- Tags = new[] { $"tag_{i}", $"category_{i % 5}" },
- Timestamp = DateTime.UtcNow.Ticks
- };
- _configCache[$"config_{i}"] = config;
- }
-
- // Process and cache data (simulates data transformation)
- _processedData = [];
- for (var i = 0; i < 100; i++)
- {
- var data = $"Record_{i}_Data_{Guid.NewGuid().ToString()[..8]}";
- var processed = data.ToUpperInvariant() + $"_Processed_{i * 2}";
- _processedData.Add(processed);
- }
-
- // Build index lookup (simulates index creation)
- _indexLookup = [];
- for (var i = 0; i < 100; i++)
- {
- _indexLookup.Add(i * 3);
- }
-
- // Serialize configuration (simulates config serialization)
- _serializedConfig = JsonSerializer.Serialize(_configCache);
-
- _totalRecords = _processedData.Count;
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_AccessConfigCache()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_AccessConfigCache()
-#elif NUNIT
- [Test]
- public void Constructor_Test_AccessConfigCache()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_AccessConfigCache()
-#endif
- {
- var config = _configCache["config_10"];
-
-#if TUNIT
- await Assert.That(config).IsNotNull();
- await Assert.That(_configCache).HasCount(50);
-#elif XUNIT || XUNIT3
- Assert.NotNull(config);
- Assert.Equal(50, _configCache.Count);
-#elif NUNIT
- Assert.That(config, Is.Not.Null);
- Assert.That(_configCache.Count, Is.EqualTo(50));
-#elif MSTEST
- Assert.IsNotNull(config);
- Assert.AreEqual(50, _configCache.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_AccessProcessedData()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_AccessProcessedData()
-#elif NUNIT
- [Test]
- public void Constructor_Test_AccessProcessedData()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_AccessProcessedData()
-#endif
- {
- var firstRecord = _processedData[0];
-
-#if TUNIT
- await Assert.That(firstRecord).Contains("RECORD_0");
- await Assert.That(firstRecord).Contains("Processed_0");
-#elif XUNIT || XUNIT3
- Assert.Contains("RECORD_0", firstRecord);
- Assert.Contains("Processed_0", firstRecord);
-#elif NUNIT
- Assert.That(firstRecord, Does.Contain("RECORD_0"));
- Assert.That(firstRecord, Does.Contain("Processed_0"));
-#elif MSTEST
- Assert.IsTrue(firstRecord.Contains("RECORD_0"));
- Assert.IsTrue(firstRecord.Contains("Processed_0"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_IndexLookup()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_IndexLookup()
-#elif NUNIT
- [Test]
- public void Constructor_Test_IndexLookup()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_IndexLookup()
-#endif
- {
- var hasValue = _indexLookup.Contains(15);
-
-#if TUNIT
- await Assert.That(hasValue).IsTrue();
- await Assert.That(_indexLookup).HasCount(100);
-#elif XUNIT || XUNIT3
- Assert.True(hasValue);
- Assert.Equal(100, _indexLookup.Count);
-#elif NUNIT
- Assert.That(hasValue, Is.True);
- Assert.That(_indexLookup.Count, Is.EqualTo(100));
-#elif MSTEST
- Assert.IsTrue(hasValue);
- Assert.AreEqual(100, _indexLookup.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_SerializedConfig()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_SerializedConfig()
-#elif NUNIT
- [Test]
- public void Constructor_Test_SerializedConfig()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_SerializedConfig()
-#endif
- {
- var isValid = _serializedConfig.Length > 100;
-
-#if TUNIT
- await Assert.That(_serializedConfig).IsNotEmpty();
- await Assert.That(isValid).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.NotEmpty(_serializedConfig);
- Assert.True(isValid);
-#elif NUNIT
- Assert.That(_serializedConfig, Is.Not.Empty);
- Assert.That(isValid, Is.True);
-#elif MSTEST
- Assert.IsTrue(_serializedConfig.Length > 0);
- Assert.IsTrue(isValid);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_TotalRecords()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_TotalRecords()
-#elif NUNIT
- [Test]
- public void Constructor_Test_TotalRecords()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_TotalRecords()
-#endif
- {
-#if TUNIT
- await Assert.That(_totalRecords).IsEqualTo(100);
- await Assert.That(_processedData).HasCount(_totalRecords);
-#elif XUNIT || XUNIT3
- Assert.Equal(100, _totalRecords);
- Assert.Equal(_totalRecords, _processedData.Count);
-#elif NUNIT
- Assert.That(_totalRecords, Is.EqualTo(100));
- Assert.That(_processedData.Count, Is.EqualTo(_totalRecords));
-#elif MSTEST
- Assert.AreEqual(100, _totalRecords);
- Assert.AreEqual(_totalRecords, _processedData.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_DataRange()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_DataRange()
-#elif NUNIT
- [Test]
- public void Constructor_Test_DataRange()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_DataRange()
-#endif
- {
- var midRecord = _processedData[50];
-
-#if TUNIT
- await Assert.That(midRecord).Contains("RECORD_50");
- await Assert.That(midRecord).IsNotEmpty();
-#elif XUNIT || XUNIT3
- Assert.Contains("RECORD_50", midRecord);
- Assert.NotEmpty(midRecord);
-#elif NUNIT
- Assert.That(midRecord, Does.Contain("RECORD_50"));
- Assert.That(midRecord, Is.Not.Empty);
-#elif MSTEST
- Assert.IsTrue(midRecord.Contains("RECORD_50"));
- Assert.IsTrue(midRecord.Length > 0);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_ConfigLookup()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_ConfigLookup()
-#elif NUNIT
- [Test]
- public void Constructor_Test_ConfigLookup()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_ConfigLookup()
-#endif
- {
- var hasKey = _configCache.ContainsKey("config_25");
-
-#if TUNIT
- await Assert.That(hasKey).IsTrue();
- await Assert.That(_configCache["config_25"]).IsNotNull();
-#elif XUNIT || XUNIT3
- Assert.True(hasKey);
- Assert.NotNull(_configCache["config_25"]);
-#elif NUNIT
- Assert.That(hasKey, Is.True);
- Assert.That(_configCache["config_25"], Is.Not.Null);
-#elif MSTEST
- Assert.IsTrue(hasKey);
- Assert.IsNotNull(_configCache["config_25"]);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_IndexContains()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_IndexContains()
-#elif NUNIT
- [Test]
- public void Constructor_Test_IndexContains()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_IndexContains()
-#endif
- {
- var contains30 = _indexLookup.Contains(30);
- var contains99 = _indexLookup.Contains(99);
-
-#if TUNIT
- await Assert.That(contains30).IsTrue();
- await Assert.That(contains99).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.True(contains30);
- Assert.True(contains99);
-#elif NUNIT
- Assert.That(contains30, Is.True);
- Assert.That(contains99, Is.True);
-#elif MSTEST
- Assert.IsTrue(contains30);
- Assert.IsTrue(contains99);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_DataEndRange()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_DataEndRange()
-#elif NUNIT
- [Test]
- public void Constructor_Test_DataEndRange()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_DataEndRange()
-#endif
- {
- var lastRecord = _processedData[^1];
-
-#if TUNIT
- await Assert.That(lastRecord).Contains("RECORD_99");
- await Assert.That(lastRecord).Contains("Processed_198");
-#elif XUNIT || XUNIT3
- Assert.Contains("RECORD_99", lastRecord);
- Assert.Contains("Processed_198", lastRecord);
-#elif NUNIT
- Assert.That(lastRecord, Does.Contain("RECORD_99"));
- Assert.That(lastRecord, Does.Contain("Processed_198"));
-#elif MSTEST
- Assert.IsTrue(lastRecord.Contains("RECORD_99"));
- Assert.IsTrue(lastRecord.Contains("Processed_198"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_ConfigRange()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_ConfigRange()
-#elif NUNIT
- [Test]
- public void Constructor_Test_ConfigRange()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_ConfigRange()
-#endif
- {
- var firstConfig = _configCache["config_0"];
- var lastConfig = _configCache["config_49"];
-
-#if TUNIT
- await Assert.That(firstConfig).IsNotNull();
- await Assert.That(lastConfig).IsNotNull();
-#elif XUNIT || XUNIT3
- Assert.NotNull(firstConfig);
- Assert.NotNull(lastConfig);
-#elif NUNIT
- Assert.That(firstConfig, Is.Not.Null);
- Assert.That(lastConfig, Is.Not.Null);
-#elif MSTEST
- Assert.IsNotNull(firstConfig);
- Assert.IsNotNull(lastConfig);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_IndexMax()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_IndexMax()
-#elif NUNIT
- [Test]
- public void Constructor_Test_IndexMax()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_IndexMax()
-#endif
- {
- var maxValue = _indexLookup.Max();
-
-#if TUNIT
- await Assert.That(maxValue).IsEqualTo(297);
-#elif XUNIT || XUNIT3
- Assert.Equal(297, maxValue);
-#elif NUNIT
- Assert.That(maxValue, Is.EqualTo(297));
-#elif MSTEST
- Assert.AreEqual(297, maxValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_SerializedLength()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_SerializedLength()
-#elif NUNIT
- [Test]
- public void Constructor_Test_SerializedLength()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_SerializedLength()
-#endif
- {
- var length = _serializedConfig.Length;
- var hasContent = length > 1000;
-
-#if TUNIT
- await Assert.That(hasContent).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.True(hasContent);
-#elif NUNIT
- Assert.That(hasContent, Is.True);
-#elif MSTEST
- Assert.IsTrue(hasContent);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_DataConsistency()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_DataConsistency()
-#elif NUNIT
- [Test]
- public void Constructor_Test_DataConsistency()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_DataConsistency()
-#endif
- {
- var allProcessed = _processedData.All(d => d.Contains("Processed_"));
-
-#if TUNIT
- await Assert.That(allProcessed).IsTrue();
- await Assert.That(_processedData).IsNotEmpty();
-#elif XUNIT || XUNIT3
- Assert.True(allProcessed);
- Assert.NotEmpty(_processedData);
-#elif NUNIT
- Assert.That(allProcessed, Is.True);
- Assert.That(_processedData, Is.Not.Empty);
-#elif MSTEST
- Assert.IsTrue(allProcessed);
- Assert.IsTrue(_processedData.Count > 0);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_IndexMin()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_IndexMin()
-#elif NUNIT
- [Test]
- public void Constructor_Test_IndexMin()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_IndexMin()
-#endif
- {
- var minValue = _indexLookup.Min();
-
-#if TUNIT
- await Assert.That(minValue).IsEqualTo(0);
-#elif XUNIT || XUNIT3
- Assert.Equal(0, minValue);
-#elif NUNIT
- Assert.That(minValue, Is.EqualTo(0));
-#elif MSTEST
- Assert.AreEqual(0, minValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task Constructor_Test_ConfigCount()
-#elif XUNIT || XUNIT3
- [Fact]
- public void Constructor_Test_ConfigCount()
-#elif NUNIT
- [Test]
- public void Constructor_Test_ConfigCount()
-#elif MSTEST
- [TestMethod]
- public void Constructor_Test_ConfigCount()
-#endif
- {
- var count = _configCache.Count;
- var keysValid = _configCache.Keys.All(k => k.StartsWith("config_"));
-
-#if TUNIT
- await Assert.That(count).IsEqualTo(50);
- await Assert.That(keysValid).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.Equal(50, count);
- Assert.True(keysValid);
-#elif NUNIT
- Assert.That(count, Is.EqualTo(50));
- Assert.That(keysValid, Is.True);
-#elif MSTEST
- Assert.AreEqual(50, count);
- Assert.IsTrue(keysValid);
-#endif
- }
-}
diff --git a/tools/speed-comparison/UnifiedTests/PerTestFixtureTests.cs b/tools/speed-comparison/UnifiedTests/PerTestFixtureTests.cs
deleted file mode 100644
index 53c18649b1..0000000000
--- a/tools/speed-comparison/UnifiedTests/PerTestFixtureTests.cs
+++ /dev/null
@@ -1,493 +0,0 @@
-using System.Text.Json;
-using System.Threading.Tasks;
-
-namespace UnifiedTests;
-
-///
-/// Tests measuring the overhead of per-test isolated fixture creation.
-/// Each test gets its own fresh fixture instance, simulating scenarios
-/// where tests require isolated state and cannot share resources.
-///
-#if MSTEST
-[TestClass]
-public class PerTestFixtureTests : IDisposable
-#elif NUNIT
-[TestFixture]
-public class PerTestFixtureTests : IDisposable
-#elif XUNIT || XUNIT3
-public class PerTestFixtureTests : IDisposable
-#else
-public class PerTestFixtureTests : IDisposable
-#endif
-{
- private Dictionary _testCache;
- private List _processedItems;
- private HashSet _usedIds;
- private string _testId;
-
- public PerTestFixtureTests()
- {
- // Per-test initialization - each test gets a fresh fixture
- // Simulates scenarios requiring isolation (e.g., database transactions, file handles)
-
- _testId = Guid.NewGuid().ToString()[..8];
- _testCache = [];
- _processedItems = [];
- _usedIds = [];
-
- // Initialize test-specific data
- for (var i = 0; i < 30; i++)
- {
- _testCache[$"item_{i}"] = i * 10;
- _usedIds.Add(i);
- }
-
- // Process some initial data
- for (var i = 0; i < 20; i++)
- {
- var item = $"TestData_{_testId}_{i}_{DateTime.UtcNow.Ticks % 1000}";
- _processedItems.Add(item);
- }
- }
-
- public void Dispose()
- {
- // Cleanup per-test resources
- _testCache?.Clear();
- _processedItems?.Clear();
- _usedIds?.Clear();
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test1()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test1()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test1()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test1()
-#endif
- {
- var value = _testCache["item_5"];
-
-#if TUNIT
- await Assert.That(value).IsEqualTo(50);
- await Assert.That(_testCache).HasCount(30);
-#elif XUNIT || XUNIT3
- Assert.Equal(50, value);
- Assert.Equal(30, _testCache.Count);
-#elif NUNIT
- Assert.That(value, Is.EqualTo(50));
- Assert.That(_testCache.Count, Is.EqualTo(30));
-#elif MSTEST
- Assert.AreEqual(50, value);
- Assert.AreEqual(30, _testCache.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test2()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test2()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test2()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test2()
-#endif
- {
- var count = _processedItems.Count;
-
-#if TUNIT
- await Assert.That(count).IsEqualTo(20);
- await Assert.That(_processedItems[0]).Contains(_testId);
-#elif XUNIT || XUNIT3
- Assert.Equal(20, count);
- Assert.Contains(_testId, _processedItems[0]);
-#elif NUNIT
- Assert.That(count, Is.EqualTo(20));
- Assert.That(_processedItems[0], Does.Contain(_testId));
-#elif MSTEST
- Assert.AreEqual(20, count);
- Assert.IsTrue(_processedItems[0].Contains(_testId));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test3()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test3()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test3()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test3()
-#endif
- {
- var hasId = _usedIds.Contains(15);
-
-#if TUNIT
- await Assert.That(hasId).IsTrue();
- await Assert.That(_usedIds).HasCount(30);
-#elif XUNIT || XUNIT3
- Assert.True(hasId);
- Assert.Equal(30, _usedIds.Count);
-#elif NUNIT
- Assert.That(hasId, Is.True);
- Assert.That(_usedIds.Count, Is.EqualTo(30));
-#elif MSTEST
- Assert.IsTrue(hasId);
- Assert.AreEqual(30, _usedIds.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test4()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test4()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test4()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test4()
-#endif
- {
- var testIdLength = _testId.Length;
-
-#if TUNIT
- await Assert.That(testIdLength).IsEqualTo(8);
- await Assert.That(_testId).IsNotEmpty();
-#elif XUNIT || XUNIT3
- Assert.Equal(8, testIdLength);
- Assert.NotEmpty(_testId);
-#elif NUNIT
- Assert.That(testIdLength, Is.EqualTo(8));
- Assert.That(_testId, Is.Not.Empty);
-#elif MSTEST
- Assert.AreEqual(8, testIdLength);
- Assert.IsTrue(_testId.Length > 0);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test5()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test5()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test5()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test5()
-#endif
- {
- var sum = _testCache.Values.Sum();
-
-#if TUNIT
- await Assert.That(sum).IsEqualTo(4350);
-#elif XUNIT || XUNIT3
- Assert.Equal(4350, sum);
-#elif NUNIT
- Assert.That(sum, Is.EqualTo(4350));
-#elif MSTEST
- Assert.AreEqual(4350, sum);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test6()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test6()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test6()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test6()
-#endif
- {
- var lastItem = _processedItems[^1];
-
-#if TUNIT
- await Assert.That(lastItem).Contains("TestData_");
- await Assert.That(lastItem).Contains(_testId);
-#elif XUNIT || XUNIT3
- Assert.Contains("TestData_", lastItem);
- Assert.Contains(_testId, lastItem);
-#elif NUNIT
- Assert.That(lastItem, Does.Contain("TestData_"));
- Assert.That(lastItem, Does.Contain(_testId));
-#elif MSTEST
- Assert.IsTrue(lastItem.Contains("TestData_"));
- Assert.IsTrue(lastItem.Contains(_testId));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test7()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test7()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test7()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test7()
-#endif
- {
- var maxId = _usedIds.Max();
-
-#if TUNIT
- await Assert.That(maxId).IsEqualTo(29);
-#elif XUNIT || XUNIT3
- Assert.Equal(29, maxId);
-#elif NUNIT
- Assert.That(maxId, Is.EqualTo(29));
-#elif MSTEST
- Assert.AreEqual(29, maxId);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test8()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test8()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test8()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test8()
-#endif
- {
- var hasKey = _testCache.ContainsKey("item_20");
-
-#if TUNIT
- await Assert.That(hasKey).IsTrue();
- await Assert.That(_testCache["item_20"]).IsEqualTo(200);
-#elif XUNIT || XUNIT3
- Assert.True(hasKey);
- Assert.Equal(200, _testCache["item_20"]);
-#elif NUNIT
- Assert.That(hasKey, Is.True);
- Assert.That(_testCache["item_20"], Is.EqualTo(200));
-#elif MSTEST
- Assert.IsTrue(hasKey);
- Assert.AreEqual(200, _testCache["item_20"]);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test9()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test9()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test9()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test9()
-#endif
- {
- var allContainTestId = _processedItems.All(item => item.Contains(_testId));
-
-#if TUNIT
- await Assert.That(allContainTestId).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.True(allContainTestId);
-#elif NUNIT
- Assert.That(allContainTestId, Is.True);
-#elif MSTEST
- Assert.IsTrue(allContainTestId);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test10()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test10()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test10()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test10()
-#endif
- {
- var minId = _usedIds.Min();
-
-#if TUNIT
- await Assert.That(minId).IsEqualTo(0);
-#elif XUNIT || XUNIT3
- Assert.Equal(0, minId);
-#elif NUNIT
- Assert.That(minId, Is.EqualTo(0));
-#elif MSTEST
- Assert.AreEqual(0, minId);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test11()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test11()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test11()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test11()
-#endif
- {
- var firstValue = _testCache["item_0"];
-
-#if TUNIT
- await Assert.That(firstValue).IsEqualTo(0);
-#elif XUNIT || XUNIT3
- Assert.Equal(0, firstValue);
-#elif NUNIT
- Assert.That(firstValue, Is.EqualTo(0));
-#elif MSTEST
- Assert.AreEqual(0, firstValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test12()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test12()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test12()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test12()
-#endif
- {
- var avg = _testCache.Values.Average();
-
-#if TUNIT
- await Assert.That(avg).IsEqualTo(145.0);
-#elif XUNIT || XUNIT3
- Assert.Equal(145.0, avg);
-#elif NUNIT
- Assert.That(avg, Is.EqualTo(145.0));
-#elif MSTEST
- Assert.AreEqual(145.0, avg);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test13()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test13()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test13()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test13()
-#endif
- {
- var firstItem = _processedItems[0];
-
-#if TUNIT
- await Assert.That(firstItem).StartsWith("TestData_");
-#elif XUNIT || XUNIT3
- Assert.StartsWith("TestData_", firstItem);
-#elif NUNIT
- Assert.That(firstItem, Does.StartWith("TestData_"));
-#elif MSTEST
- Assert.IsTrue(firstItem.StartsWith("TestData_"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test14()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test14()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test14()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test14()
-#endif
- {
- var lastValue = _testCache["item_29"];
-
-#if TUNIT
- await Assert.That(lastValue).IsEqualTo(290);
-#elif XUNIT || XUNIT3
- Assert.Equal(290, lastValue);
-#elif NUNIT
- Assert.That(lastValue, Is.EqualTo(290));
-#elif MSTEST
- Assert.AreEqual(290, lastValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task PerTestFixture_Test15()
-#elif XUNIT || XUNIT3
- [Fact]
- public void PerTestFixture_Test15()
-#elif NUNIT
- [Test]
- public void PerTestFixture_Test15()
-#elif MSTEST
- [TestMethod]
- public void PerTestFixture_Test15()
-#endif
- {
- var keys = _testCache.Keys.ToList();
-
-#if TUNIT
- await Assert.That(keys).HasCount(30);
- await Assert.That(keys.All(k => k.StartsWith("item_"))).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.Equal(30, keys.Count);
- Assert.True(keys.All(k => k.StartsWith("item_")));
-#elif NUNIT
- Assert.That(keys.Count, Is.EqualTo(30));
- Assert.That(keys.All(k => k.StartsWith("item_")), Is.True);
-#elif MSTEST
- Assert.AreEqual(30, keys.Count);
- Assert.IsTrue(keys.All(k => k.StartsWith("item_")));
-#endif
- }
-}
diff --git a/tools/speed-comparison/UnifiedTests/SetupTeardownTests.cs b/tools/speed-comparison/UnifiedTests/SetupTeardownTests.cs
deleted file mode 100644
index d550afea0a..0000000000
--- a/tools/speed-comparison/UnifiedTests/SetupTeardownTests.cs
+++ /dev/null
@@ -1,611 +0,0 @@
-using System.Threading.Tasks;
-
-namespace UnifiedTests;
-
-///
-/// Tests measuring the overhead of setup and teardown lifecycle hooks.
-/// Each test goes through setup before execution and teardown after,
-/// allowing measurement of per-test lifecycle hook overhead.
-///
-#if MSTEST
-[TestClass]
-public class SetupTeardownTests : IDisposable
-#elif NUNIT
-[TestFixture]
-public class SetupTeardownTests : IDisposable
-#elif XUNIT || XUNIT3
-public class SetupTeardownTests : IDisposable
-#else
-public class SetupTeardownTests : IDisposable
-#endif
-{
- private Dictionary _testState;
- private List _workingData;
- private HashSet _processedKeys;
- private int _setupCounter;
-
- public SetupTeardownTests()
- {
- // Lightweight constructor - just initialize empty collections
- _testState = [];
- _workingData = [];
- _processedKeys = [];
- _setupCounter = 0;
- }
-
-#if !XUNIT && !XUNIT3
-#if TUNIT
- [Before(Test)]
-#elif MSTEST
- [TestInitialize]
-#elif NUNIT
- [SetUp]
-#endif
- public void Setup()
- {
- // Reset and prepare state for each test
- _testState.Clear();
- _workingData.Clear();
- _processedKeys.Clear();
-
- // Simulate realistic setup work
- for (var i = 0; i < 20; i++)
- {
- _testState[$"key_{i}"] = $"value_{i}_{Guid.NewGuid().ToString()[..8]}";
- _workingData.Add(i * 10);
- }
-
- _setupCounter++;
- }
-#else
- // xUnit doesn't have per-test setup - constructor is called per test
- // This creates a fair comparison of lifecycle overhead
- private void Setup()
- {
- // Reset and prepare state for each test
- _testState.Clear();
- _workingData.Clear();
- _processedKeys.Clear();
-
- // Simulate realistic setup work
- for (var i = 0; i < 20; i++)
- {
- _testState[$"key_{i}"] = $"value_{i}_{Guid.NewGuid().ToString()[..8]}";
- _workingData.Add(i * 10);
- }
-
- _setupCounter++;
- }
-#endif
-
-#if !XUNIT && !XUNIT3
-#if TUNIT
- [After(Test)]
-#elif MSTEST
- [TestCleanup]
-#elif NUNIT
- [TearDown]
-#endif
- public void Teardown()
- {
- // Actual cleanup work
- _testState.Clear();
- _workingData.Clear();
- _processedKeys.Clear();
- }
-#endif
-
- public void Dispose()
- {
-#if XUNIT || XUNIT3
- // For xUnit, Dispose is called after each test
- _testState?.Clear();
- _workingData?.Clear();
- _processedKeys?.Clear();
-#else
- // For other frameworks, cleanup happens in class disposal
- _testState?.Clear();
- _workingData?.Clear();
- _processedKeys?.Clear();
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test1()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test1()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test1()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test1()
-#endif
- {
-#if XUNIT || XUNIT3
- // Simulate setup for xUnit to maintain fairness
- Setup();
-#endif
-
- var value = _testState.GetValueOrDefault("key_5", "");
-
-#if TUNIT
- await Assert.That(value).IsNotEmpty();
- await Assert.That(value).StartsWith("value_5");
-#elif XUNIT || XUNIT3
- Assert.NotEmpty(value);
- Assert.StartsWith("value_5", value);
-#elif NUNIT
- Assert.That(value, Is.Not.Empty);
- Assert.That(value, Does.StartWith("value_5"));
-#elif MSTEST
- Assert.IsTrue(value.Length > 0);
- Assert.IsTrue(value.StartsWith("value_5"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test2()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test2()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test2()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test2()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var count = _workingData.Count;
-
-#if TUNIT
- await Assert.That(count).IsEqualTo(20);
- await Assert.That(_workingData[0]).IsEqualTo(0);
-#elif XUNIT || XUNIT3
- Assert.Equal(20, count);
- Assert.Equal(0, _workingData[0]);
-#elif NUNIT
- Assert.That(count, Is.EqualTo(20));
- Assert.That(_workingData[0], Is.EqualTo(0));
-#elif MSTEST
- Assert.AreEqual(20, count);
- Assert.AreEqual(0, _workingData[0]);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test3()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test3()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test3()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test3()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- _processedKeys.Add("test_key_1");
- _processedKeys.Add("test_key_2");
-
-#if TUNIT
- await Assert.That(_processedKeys).HasCount(2);
- await Assert.That(_processedKeys.Contains("test_key_1")).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.Equal(2, _processedKeys.Count);
- Assert.True(_processedKeys.Contains("test_key_1"));
-#elif NUNIT
- Assert.That(_processedKeys.Count, Is.EqualTo(2));
- Assert.That(_processedKeys.Contains("test_key_1"), Is.True);
-#elif MSTEST
- Assert.AreEqual(2, _processedKeys.Count);
- Assert.IsTrue(_processedKeys.Contains("test_key_1"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test4()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test4()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test4()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test4()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var lastValue = _workingData[^1];
-
-#if TUNIT
- await Assert.That(lastValue).IsEqualTo(190);
-#elif XUNIT || XUNIT3
- Assert.Equal(190, lastValue);
-#elif NUNIT
- Assert.That(lastValue, Is.EqualTo(190));
-#elif MSTEST
- Assert.AreEqual(190, lastValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test5()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test5()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test5()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test5()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var hasKey = _testState.ContainsKey("key_10");
-
-#if TUNIT
- await Assert.That(hasKey).IsTrue();
- await Assert.That(_testState).HasCount(20);
-#elif XUNIT || XUNIT3
- Assert.True(hasKey);
- Assert.Equal(20, _testState.Count);
-#elif NUNIT
- Assert.That(hasKey, Is.True);
- Assert.That(_testState.Count, Is.EqualTo(20));
-#elif MSTEST
- Assert.IsTrue(hasKey);
- Assert.AreEqual(20, _testState.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test6()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test6()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test6()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test6()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var sum = _workingData.Sum();
-
-#if TUNIT
- await Assert.That(sum).IsEqualTo(1900);
-#elif XUNIT || XUNIT3
- Assert.Equal(1900, sum);
-#elif NUNIT
- Assert.That(sum, Is.EqualTo(1900));
-#elif MSTEST
- Assert.AreEqual(1900, sum);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test7()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test7()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test7()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test7()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var keys = _testState.Keys.ToList();
-
-#if TUNIT
- await Assert.That(keys).HasCount(20);
- await Assert.That(keys[0]).StartsWith("key_");
-#elif XUNIT || XUNIT3
- Assert.Equal(20, keys.Count);
- Assert.StartsWith("key_", keys[0]);
-#elif NUNIT
- Assert.That(keys.Count, Is.EqualTo(20));
- Assert.That(keys[0], Does.StartWith("key_"));
-#elif MSTEST
- Assert.AreEqual(20, keys.Count);
- Assert.IsTrue(keys[0].StartsWith("key_"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test8()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test8()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test8()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test8()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- _processedKeys.Add("processed_1");
- var hasProcessed = _processedKeys.Contains("processed_1");
-
-#if TUNIT
- await Assert.That(hasProcessed).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.True(hasProcessed);
-#elif NUNIT
- Assert.That(hasProcessed, Is.True);
-#elif MSTEST
- Assert.IsTrue(hasProcessed);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test9()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test9()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test9()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test9()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var midValue = _workingData[10];
-
-#if TUNIT
- await Assert.That(midValue).IsEqualTo(100);
-#elif XUNIT || XUNIT3
- Assert.Equal(100, midValue);
-#elif NUNIT
- Assert.That(midValue, Is.EqualTo(100));
-#elif MSTEST
- Assert.AreEqual(100, midValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test10()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test10()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test10()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test10()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var allValues = _testState.Values.ToList();
-
-#if TUNIT
- await Assert.That(allValues).HasCount(20);
- await Assert.That(allValues.All(v => v.StartsWith("value_"))).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.Equal(20, allValues.Count);
- Assert.True(allValues.All(v => v.StartsWith("value_")));
-#elif NUNIT
- Assert.That(allValues.Count, Is.EqualTo(20));
- Assert.That(allValues.All(v => v.StartsWith("value_")), Is.True);
-#elif MSTEST
- Assert.AreEqual(20, allValues.Count);
- Assert.IsTrue(allValues.All(v => v.StartsWith("value_")));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test11()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test11()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test11()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test11()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var avg = _workingData.Average();
-
-#if TUNIT
- await Assert.That(avg).IsEqualTo(95.0);
-#elif XUNIT || XUNIT3
- Assert.Equal(95.0, avg);
-#elif NUNIT
- Assert.That(avg, Is.EqualTo(95.0));
-#elif MSTEST
- Assert.AreEqual(95.0, avg);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test12()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test12()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test12()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test12()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var firstKey = "key_0";
- var value = _testState[firstKey];
-
-#if TUNIT
- await Assert.That(value).StartsWith("value_0");
-#elif XUNIT || XUNIT3
- Assert.StartsWith("value_0", value);
-#elif NUNIT
- Assert.That(value, Does.StartWith("value_0"));
-#elif MSTEST
- Assert.IsTrue(value.StartsWith("value_0"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test13()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test13()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test13()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test13()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var max = _workingData.Max();
-
-#if TUNIT
- await Assert.That(max).IsEqualTo(190);
-#elif XUNIT || XUNIT3
- Assert.Equal(190, max);
-#elif NUNIT
- Assert.That(max, Is.EqualTo(190));
-#elif MSTEST
- Assert.AreEqual(190, max);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test14()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test14()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test14()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test14()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test14()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- _processedKeys.Add("temp_1");
- _processedKeys.Add("temp_2");
- _processedKeys.Add("temp_3");
-
-#if TUNIT
- await Assert.That(_processedKeys).HasCount(3);
-#elif XUNIT || XUNIT3
- Assert.Equal(3, _processedKeys.Count);
-#elif NUNIT
- Assert.That(_processedKeys.Count, Is.EqualTo(3));
-#elif MSTEST
- Assert.AreEqual(3, _processedKeys.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SetupTeardown_Test15()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SetupTeardown_Test15()
-#elif NUNIT
- [Test]
- public void SetupTeardown_Test15()
-#elif MSTEST
- [TestMethod]
- public void SetupTeardown_Test15()
-#endif
- {
-#if XUNIT || XUNIT3
- Setup();
-#endif
-
- var lastKey = "key_19";
- var hasLastKey = _testState.ContainsKey(lastKey);
-
-#if TUNIT
- await Assert.That(hasLastKey).IsTrue();
-#elif XUNIT || XUNIT3
- Assert.True(hasLastKey);
-#elif NUNIT
- Assert.That(hasLastKey, Is.True);
-#elif MSTEST
- Assert.IsTrue(hasLastKey);
-#endif
- }
-}
diff --git a/tools/speed-comparison/UnifiedTests/SharedFixtureTests.cs b/tools/speed-comparison/UnifiedTests/SharedFixtureTests.cs
deleted file mode 100644
index 5776af7639..0000000000
--- a/tools/speed-comparison/UnifiedTests/SharedFixtureTests.cs
+++ /dev/null
@@ -1,609 +0,0 @@
-using System.Text.Json;
-using System.Threading.Tasks;
-
-namespace UnifiedTests;
-
-///
-/// Tests measuring the efficiency of shared class-level fixtures.
-/// The fixture is initialized once and reused across all tests,
-/// allowing measurement of fixture sharing and reuse overhead.
-///
-
-// Shared fixture class for xUnit
-#if XUNIT || XUNIT3
-public class SharedTestFixture : IDisposable
-{
- public Dictionary SharedCache { get; }
- public List ProcessedRecords { get; }
- public string ConfigurationJson { get; }
-
- public SharedTestFixture()
- {
- // Expensive one-time initialization
- SharedCache = [];
- ProcessedRecords = [];
-
- // Build shared cache
- for (var i = 0; i < 100; i++)
- {
- SharedCache[i] = $"CachedValue_{i}_{Guid.NewGuid().ToString()[..8]}";
- }
-
- // Process records
- for (var i = 0; i < 50; i++)
- {
- ProcessedRecords.Add(new ProcessedRecord
- {
- Id = i,
- Name = $"Record_{i}",
- Value = i * 100,
- Timestamp = DateTime.UtcNow
- });
- }
-
- // Serialize configuration
- ConfigurationJson = JsonSerializer.Serialize(new
- {
- Version = "1.0",
- Environment = "Test",
- Settings = SharedCache.Take(10).ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value)
- });
- }
-
- public void Dispose()
- {
- SharedCache?.Clear();
- ProcessedRecords?.Clear();
- }
-}
-
-public class ProcessedRecord
-{
- public int Id { get; set; }
- public string Name { get; set; } = "";
- public int Value { get; set; }
- public DateTime Timestamp { get; set; }
-}
-#endif
-
-#if MSTEST
-[TestClass]
-public class SharedFixtureTests
-#elif NUNIT
-[TestFixture]
-public class SharedFixtureTests
-#elif XUNIT || XUNIT3
-public class SharedFixtureTests : IClassFixture
-#else
-public class SharedFixtureTests
-#endif
-{
-#if !XUNIT && !XUNIT3
- private static Dictionary _sharedCache;
- private static List _processedRecords;
- private static string _configurationJson;
-
- public class ProcessedRecord
- {
- public int Id { get; set; }
- public string Name { get; set; } = "";
- public int Value { get; set; }
- public DateTime Timestamp { get; set; }
- }
-#endif
-
-#if XUNIT || XUNIT3
- private readonly SharedTestFixture _fixture;
-
- public SharedFixtureTests(SharedTestFixture fixture)
- {
- _fixture = fixture;
- }
-#endif
-
-#if !XUNIT && !XUNIT3
-#if TUNIT
- [Before(Class)]
- public static void ClassSetup()
-#elif MSTEST
- [ClassInitialize]
- public static void ClassSetup(TestContext context)
-#elif NUNIT
- [OneTimeSetUp]
- public void ClassSetup()
-#endif
- {
- // One-time expensive initialization shared across all tests
- _sharedCache = [];
- _processedRecords = [];
-
- // Build shared cache
- for (var i = 0; i < 100; i++)
- {
- _sharedCache[i] = $"CachedValue_{i}_{Guid.NewGuid().ToString()[..8]}";
- }
-
- // Process records
- for (var i = 0; i < 50; i++)
- {
- _processedRecords.Add(new ProcessedRecord
- {
- Id = i,
- Name = $"Record_{i}",
- Value = i * 100,
- Timestamp = DateTime.UtcNow
- });
- }
-
- // Serialize configuration
- _configurationJson = JsonSerializer.Serialize(new
- {
- Version = "1.0",
- Environment = "Test",
- Settings = _sharedCache.Take(10).ToDictionary(kvp => kvp.Key.ToString(), kvp => kvp.Value)
- });
- }
-
-#if TUNIT
- [After(Class)]
- public static void ClassCleanup()
-#elif MSTEST
- [ClassCleanup]
- public static void ClassCleanup()
-#elif NUNIT
- [OneTimeTearDown]
- public void ClassCleanup()
-#endif
- {
- _sharedCache?.Clear();
- _processedRecords?.Clear();
- }
-#endif
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test1()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test1()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test1()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test1()
-#endif
- {
-#if XUNIT || XUNIT3
- var value = _fixture.SharedCache[10];
- Assert.NotEmpty(value);
- Assert.Contains("CachedValue_10", value);
-#elif TUNIT
- var value = _sharedCache[10];
- await Assert.That(value).IsNotEmpty();
- await Assert.That(value).Contains("CachedValue_10");
-#elif NUNIT
- var value = _sharedCache[10];
- Assert.That(value, Is.Not.Empty);
- Assert.That(value, Does.Contain("CachedValue_10"));
-#elif MSTEST
- var value = _sharedCache[10];
- Assert.IsTrue(value.Length > 0);
- Assert.IsTrue(value.Contains("CachedValue_10"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test2()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test2()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test2()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test2()
-#endif
- {
-#if XUNIT || XUNIT3
- var count = _fixture.SharedCache.Count;
- Assert.Equal(100, count);
-#elif TUNIT
- var count = _sharedCache.Count;
- await Assert.That(count).IsEqualTo(100);
-#elif NUNIT
- var count = _sharedCache.Count;
- Assert.That(count, Is.EqualTo(100));
-#elif MSTEST
- var count = _sharedCache.Count;
- Assert.AreEqual(100, count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test3()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test3()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test3()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test3()
-#endif
- {
-#if XUNIT || XUNIT3
- var record = _fixture.ProcessedRecords[0];
- Assert.Equal(0, record.Id);
- Assert.Equal("Record_0", record.Name);
-#elif TUNIT
- var record = _processedRecords[0];
- await Assert.That(record.Id).IsEqualTo(0);
- await Assert.That(record.Name).IsEqualTo("Record_0");
-#elif NUNIT
- var record = _processedRecords[0];
- Assert.That(record.Id, Is.EqualTo(0));
- Assert.That(record.Name, Is.EqualTo("Record_0"));
-#elif MSTEST
- var record = _processedRecords[0];
- Assert.AreEqual(0, record.Id);
- Assert.AreEqual("Record_0", record.Name);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test4()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test4()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test4()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test4()
-#endif
- {
-#if XUNIT || XUNIT3
- var recordCount = _fixture.ProcessedRecords.Count;
- Assert.Equal(50, recordCount);
-#elif TUNIT
- var recordCount = _processedRecords.Count;
- await Assert.That(recordCount).IsEqualTo(50);
-#elif NUNIT
- var recordCount = _processedRecords.Count;
- Assert.That(recordCount, Is.EqualTo(50));
-#elif MSTEST
- var recordCount = _processedRecords.Count;
- Assert.AreEqual(50, recordCount);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test5()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test5()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test5()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test5()
-#endif
- {
-#if XUNIT || XUNIT3
- var json = _fixture.ConfigurationJson;
- Assert.NotEmpty(json);
- Assert.Contains("Version", json);
-#elif TUNIT
- var json = _configurationJson;
- await Assert.That(json).IsNotEmpty();
- await Assert.That(json).Contains("Version");
-#elif NUNIT
- var json = _configurationJson;
- Assert.That(json, Is.Not.Empty);
- Assert.That(json, Does.Contain("Version"));
-#elif MSTEST
- var json = _configurationJson;
- Assert.IsTrue(json.Length > 0);
- Assert.IsTrue(json.Contains("Version"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test6()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test6()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test6()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test6()
-#endif
- {
-#if XUNIT || XUNIT3
- var lastRecord = _fixture.ProcessedRecords[^1];
- Assert.Equal(49, lastRecord.Id);
-#elif TUNIT
- var lastRecord = _processedRecords[^1];
- await Assert.That(lastRecord.Id).IsEqualTo(49);
-#elif NUNIT
- var lastRecord = _processedRecords[^1];
- Assert.That(lastRecord.Id, Is.EqualTo(49));
-#elif MSTEST
- var lastRecord = _processedRecords[^1];
- Assert.AreEqual(49, lastRecord.Id);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test7()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test7()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test7()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test7()
-#endif
- {
-#if XUNIT || XUNIT3
- var midValue = _fixture.SharedCache[50];
- Assert.Contains("CachedValue_50", midValue);
-#elif TUNIT
- var midValue = _sharedCache[50];
- await Assert.That(midValue).Contains("CachedValue_50");
-#elif NUNIT
- var midValue = _sharedCache[50];
- Assert.That(midValue, Does.Contain("CachedValue_50"));
-#elif MSTEST
- var midValue = _sharedCache[50];
- Assert.IsTrue(midValue.Contains("CachedValue_50"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test8()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test8()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test8()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test8()
-#endif
- {
-#if XUNIT || XUNIT3
- var totalValue = _fixture.ProcessedRecords.Sum(r => r.Value);
- Assert.Equal(122500, totalValue);
-#elif TUNIT
- var totalValue = _processedRecords.Sum(r => r.Value);
- await Assert.That(totalValue).IsEqualTo(122500);
-#elif NUNIT
- var totalValue = _processedRecords.Sum(r => r.Value);
- Assert.That(totalValue, Is.EqualTo(122500));
-#elif MSTEST
- var totalValue = _processedRecords.Sum(r => r.Value);
- Assert.AreEqual(122500, totalValue);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test9()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test9()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test9()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test9()
-#endif
- {
-#if XUNIT || XUNIT3
- var hasKey = _fixture.SharedCache.ContainsKey(99);
- Assert.True(hasKey);
-#elif TUNIT
- var hasKey = _sharedCache.ContainsKey(99);
- await Assert.That(hasKey).IsTrue();
-#elif NUNIT
- var hasKey = _sharedCache.ContainsKey(99);
- Assert.That(hasKey, Is.True);
-#elif MSTEST
- var hasKey = _sharedCache.ContainsKey(99);
- Assert.IsTrue(hasKey);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test10()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test10()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test10()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test10()
-#endif
- {
-#if XUNIT || XUNIT3
- var record = _fixture.ProcessedRecords[25];
- Assert.Equal(2500, record.Value);
-#elif TUNIT
- var record = _processedRecords[25];
- await Assert.That(record.Value).IsEqualTo(2500);
-#elif NUNIT
- var record = _processedRecords[25];
- Assert.That(record.Value, Is.EqualTo(2500));
-#elif MSTEST
- var record = _processedRecords[25];
- Assert.AreEqual(2500, record.Value);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test11()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test11()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test11()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test11()
-#endif
- {
-#if XUNIT || XUNIT3
- var firstValue = _fixture.SharedCache[0];
- Assert.StartsWith("CachedValue_0", firstValue);
-#elif TUNIT
- var firstValue = _sharedCache[0];
- await Assert.That(firstValue).StartsWith("CachedValue_0");
-#elif NUNIT
- var firstValue = _sharedCache[0];
- Assert.That(firstValue, Does.StartWith("CachedValue_0"));
-#elif MSTEST
- var firstValue = _sharedCache[0];
- Assert.IsTrue(firstValue.StartsWith("CachedValue_0"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test12()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test12()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test12()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test12()
-#endif
- {
-#if XUNIT || XUNIT3
- var names = _fixture.ProcessedRecords.Select(r => r.Name).ToList();
- Assert.Equal(50, names.Count);
-#elif TUNIT
- var names = _processedRecords.Select(r => r.Name).ToList();
- await Assert.That(names).HasCount(50);
-#elif NUNIT
- var names = _processedRecords.Select(r => r.Name).ToList();
- Assert.That(names.Count, Is.EqualTo(50));
-#elif MSTEST
- var names = _processedRecords.Select(r => r.Name).ToList();
- Assert.AreEqual(50, names.Count);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test13()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test13()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test13()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test13()
-#endif
- {
-#if XUNIT || XUNIT3
- var json = _fixture.ConfigurationJson;
- Assert.Contains("Environment", json);
-#elif TUNIT
- var json = _configurationJson;
- await Assert.That(json).Contains("Environment");
-#elif NUNIT
- var json = _configurationJson;
- Assert.That(json, Does.Contain("Environment"));
-#elif MSTEST
- var json = _configurationJson;
- Assert.IsTrue(json.Contains("Environment"));
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test14()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test14()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test14()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test14()
-#endif
- {
-#if XUNIT || XUNIT3
- var lastValue = _fixture.SharedCache[99];
- Assert.NotEmpty(lastValue);
-#elif TUNIT
- var lastValue = _sharedCache[99];
- await Assert.That(lastValue).IsNotEmpty();
-#elif NUNIT
- var lastValue = _sharedCache[99];
- Assert.That(lastValue, Is.Not.Empty);
-#elif MSTEST
- var lastValue = _sharedCache[99];
- Assert.IsTrue(lastValue.Length > 0);
-#endif
- }
-
-#if TUNIT
- [Test]
- public async Task SharedFixture_Test15()
-#elif XUNIT || XUNIT3
- [Fact]
- public void SharedFixture_Test15()
-#elif NUNIT
- [Test]
- public void SharedFixture_Test15()
-#elif MSTEST
- [TestMethod]
- public void SharedFixture_Test15()
-#endif
- {
-#if XUNIT || XUNIT3
- var avgValue = _fixture.ProcessedRecords.Average(r => r.Value);
- Assert.Equal(2450.0, avgValue);
-#elif TUNIT
- var avgValue = _processedRecords.Average(r => r.Value);
- await Assert.That(avgValue).IsEqualTo(2450.0);
-#elif NUNIT
- var avgValue = _processedRecords.Average(r => r.Value);
- Assert.That(avgValue, Is.EqualTo(2450.0));
-#elif MSTEST
- var avgValue = _processedRecords.Average(r => r.Value);
- Assert.AreEqual(2450.0, avgValue);
-#endif
- }
-}