From 6eebde8ceb19c66b38cb721bccd9effb19a89bd2 Mon Sep 17 00:00:00 2001 From: Vladimir Pecanac Date: Sun, 23 Aug 2026 23:51:09 +0200 Subject: [PATCH] TaskAndValueTask: retarget net10.0, bump packages, add Task/ValueTask conversion test Retarget all three projects from net7.0 to net10.0. Bump BenchmarkDotNet 0.13.2 -> 0.15.8 and the test packages (Microsoft.NET.Test.Sdk 17.3.2 -> 18.9.0, xunit 2.4.2 -> 2.9.3, xunit.runner.visualstudio 2.4.5 -> 2.8.2, coverlet.collector 3.1.2 -> 10.0.1), which also clears the NU1903 advisory the old xunit runner pulled in through Newtonsoft.Json 9.0.1. Add ConversionTests, covering both directions between Task and ValueTask: the ValueTask(Task) and ValueTask(TResult) constructors and AsTask(). Give both benchmark methods the same city argument. TaskBenchmark ran on "Denver" and ValueTaskBenchmark on "London", so the two rows differed in their input as well as their return type; with one city they differ only in what is being measured. --- .../TaskAndValueTaskExample.csproj | 20 +++---- .../TaskAndValueTaskBenchmark.cs | 2 +- .../TaskAndValueTaskExampleBenchmark.csproj | 36 ++++++------ .../TaskAndValueTask/Tests/ConversionTests.cs | 18 ++++++ .../TaskAndValueTask/Tests/Tests.csproj | 56 +++++++++---------- 5 files changed, 75 insertions(+), 57 deletions(-) create mode 100644 csharp-advanced-topics/TaskAndValueTask/Tests/ConversionTests.cs diff --git a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExample/TaskAndValueTaskExample.csproj b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExample/TaskAndValueTaskExample.csproj index d439800007..dfb40caafc 100644 --- a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExample/TaskAndValueTaskExample.csproj +++ b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExample/TaskAndValueTaskExample.csproj @@ -1,10 +1,10 @@ - - - - Exe - net7.0 - enable - enable - - - + + + + Exe + net10.0 + enable + enable + + + diff --git a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskBenchmark.cs b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskBenchmark.cs index f9d4c3ccf9..0d41ef3828 100644 --- a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskBenchmark.cs +++ b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskBenchmark.cs @@ -21,7 +21,7 @@ public async Task TaskBenchmark(string city) } [Benchmark] - [Arguments("London")] + [Arguments("Denver")] public async ValueTask ValueTaskBenchmark(string city) { return await _weatherService.GetWeatherValueTask(city); diff --git a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskExampleBenchmark.csproj b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskExampleBenchmark.csproj index 809af9ebfb..498c0e78d8 100644 --- a/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskExampleBenchmark.csproj +++ b/csharp-advanced-topics/TaskAndValueTask/TaskAndValueTaskExampleBenchmark/TaskAndValueTaskExampleBenchmark.csproj @@ -1,18 +1,18 @@ - - - - - - - - - - - - Exe - net7.0 - enable - enable - - - + + + + + + + + + + + + Exe + net10.0 + enable + enable + + + diff --git a/csharp-advanced-topics/TaskAndValueTask/Tests/ConversionTests.cs b/csharp-advanced-topics/TaskAndValueTask/Tests/ConversionTests.cs new file mode 100644 index 0000000000..9112b5dd12 --- /dev/null +++ b/csharp-advanced-topics/TaskAndValueTask/Tests/ConversionTests.cs @@ -0,0 +1,18 @@ +namespace Tests; + +public class ConversionTests +{ + [Fact] + public async Task GivenATaskAndAValue_WhenWeConvertBetweenTaskAndValueTask_ThenBothDirectionsCarryTheSameResult() + { + Task existingTask = Task.FromResult(42); + + ValueTask fromTask = new ValueTask(existingTask); + ValueTask fromValue = new ValueTask(42); + + Task backToTask = fromValue.AsTask(); + + Assert.Equal(42, await fromTask); + Assert.Equal(42, await backToTask); + } +} diff --git a/csharp-advanced-topics/TaskAndValueTask/Tests/Tests.csproj b/csharp-advanced-topics/TaskAndValueTask/Tests/Tests.csproj index 4de5bf2f0c..c0b175b208 100644 --- a/csharp-advanced-topics/TaskAndValueTask/Tests/Tests.csproj +++ b/csharp-advanced-topics/TaskAndValueTask/Tests/Tests.csproj @@ -1,28 +1,28 @@ - - - - net7.0 - enable - enable - - false - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - - - - - + + + + net10.0 + enable + enable + + false + + + + + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + runtime; build; native; contentfiles; analyzers; buildtransitive + all + + + + + + + +