Skip to content

Commit 236d4ed

Browse files
committed
refactor: code clean up and mistakes in code docs
1 parent 216ee47 commit 236d4ed

File tree

10 files changed

+266
-283
lines changed

10 files changed

+266
-283
lines changed

docs/TimeProviderExtensions.ManualTimeProvider.md

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class ManualTimeProvider : System.TimeProvider
1212
Inheritance [System.Object](https://docs.microsoft.com/en-us/dotnet/api/System.Object 'System.Object') 🡒 [System.TimeProvider](https://docs.microsoft.com/en-us/dotnet/api/System.TimeProvider 'System.TimeProvider') 🡒 ManualTimeProvider
1313
1414
### Remarks
15-
Learn more at [https://github.com/egil/TimeProviderExtensions](https://github.com/egil/TimeProviderExtensions 'https://github.com/egil/TimeProviderExtensions').
15+
Learn more at <a href="https://github.com/egil/TimeProviderExtensions">TimeProviderExtensions on GitHub</a>.
1616
### Constructors
1717

1818
<a name='TimeProviderExtensions.ManualTimeProvider.ManualTimeProvider()'></a>
@@ -193,7 +193,7 @@ var timer = manualTimeProvider.CreateTimer(
193193
dueTime: Span.FromSecond(1),
194194
period: TimeSpan.FromSecond(1));
195195

196-
manualtTimeProvider.Advance(TimeSpan.FromSecond(3));
196+
manualTimeProvider.Advance(TimeSpan.FromSecond(3));
197197
```
198198
The call to `Advance(TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
199199
and the result of the `manualTimeProvider.GetElapsedTime(start)` in the callback call will be <em>1 second</em>, <em>2 seconds</em>,
@@ -204,7 +204,7 @@ If the desired result is to jump time by [delta](TimeProviderExtensions.ManualTi
204204
the expected number of times, i.e. such that the result of `manualTimeProvider.GetElapsedTime(start)` in the callback is
205205
<em>3 seconds</em>, <em>3 seconds</em>, and <em>3 seconds</em>, use [Jump(DateTimeOffset)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Jump(System.DateTimeOffset) 'TimeProviderExtensions.ManualTimeProvider.Jump(System.DateTimeOffset)') or [Jump(TimeSpan)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Jump(System.TimeSpan) 'TimeProviderExtensions.ManualTimeProvider.Jump(System.TimeSpan)') instead.
206206

207-
Learn more about this behavior at [https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider](https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider 'https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider').
207+
Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>.
208208

209209
<a name='TimeProviderExtensions.ManualTimeProvider.CreateManualTimer(System.Threading.TimerCallback,object,TimeProviderExtensions.ManualTimeProvider)'></a>
210210

@@ -397,17 +397,17 @@ var timer = manualTimeProvider.CreateTimer(
397397
dueTime: Span.FromSecond(1),
398398
period: TimeSpan.FromSecond(1));
399399

400-
manualtTimeProvider.Jump(manualtTimeProvider.Start + TimeSpan.FromSecond(3));
400+
manualTimeProvider.Jump(manualTimeProvider.Start + TimeSpan.FromSecond(3));
401401
```
402-
The call to `Jump(manualtTimeProvider.Start + TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
402+
The call to `Jump(manualTimeProvider.Start + TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
403403
and the result of the `manualTimeProvider.GetElapsedTime(start)` in the callback call will be <em>3 seconds</em>
404404
during all three invocations.
405405

406406
If the desired result is that timer callbacks happens exactly at their scheduled callback time, i.e. such that the result
407407
of `manualTimeProvider.GetElapsedTime(start)` in the callback will be <em>1 second</em>, <em>2 seconds</em>, and <em>3 seconds</em>,
408408
use [Advance(TimeSpan)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Advance(System.TimeSpan) 'TimeProviderExtensions.ManualTimeProvider.Advance(System.TimeSpan)') or [SetUtcNow(DateTimeOffset)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.SetUtcNow(System.DateTimeOffset) 'TimeProviderExtensions.ManualTimeProvider.SetUtcNow(System.DateTimeOffset)') instead.
409409

410-
Learn more about this behavior at [https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider](https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider 'https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider').
410+
Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. ///
411411
412412
<a name='TimeProviderExtensions.ManualTimeProvider.Jump(System.TimeSpan)'></a>
413413

@@ -452,7 +452,7 @@ var timer = manualTimeProvider.CreateTimer(
452452
dueTime: Span.FromSecond(1),
453453
period: TimeSpan.FromSecond(1));
454454

455-
manualtTimeProvider.Jump(TimeSpan.FromSecond(3));
455+
manualTimeProvider.Jump(TimeSpan.FromSecond(3));
456456
```
457457
The call to `Jump(TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
458458
and the result of the `manualTimeProvider.GetElapsedTime(start)` in the callback call will be <em>3 seconds</em>
@@ -462,7 +462,7 @@ If the desired result is that timer callbacks happens exactly at their scheduled
462462
of `manualTimeProvider.GetElapsedTime(start)` in the callback will be <em>1 second</em>, <em>2 seconds</em>, and <em>3 seconds</em>,
463463
use [Advance(TimeSpan)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Advance(System.TimeSpan) 'TimeProviderExtensions.ManualTimeProvider.Advance(System.TimeSpan)') or [SetUtcNow(DateTimeOffset)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.SetUtcNow(System.DateTimeOffset) 'TimeProviderExtensions.ManualTimeProvider.SetUtcNow(System.DateTimeOffset)') instead.
464464

465-
Learn more about this behavior at [https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider](https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider 'https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider').
465+
Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. ///
466466
467467
<a name='TimeProviderExtensions.ManualTimeProvider.SetLocalTimeZone(System.TimeZoneInfo)'></a>
468468

@@ -525,9 +525,9 @@ var timer = manualTimeProvider.CreateTimer(
525525
dueTime: Span.FromSecond(1),
526526
period: TimeSpan.FromSecond(1));
527527

528-
manualtTimeProvider.SetUtcNow(manualtTimeProvider.Start + TimeSpan.FromSecond(3));
528+
manualTimeProvider.SetUtcNow(manualTimeProvider.Start + TimeSpan.FromSecond(3));
529529
```
530-
The call to `SetUtcNow(manualtTimeProvider.Start + TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
530+
The call to `SetUtcNow(manualTimeProvider.Start + TimeSpan.FromSecond(3))` causes the `timer`s callback to be invoked three times,
531531
and the result of the `manualTimeProvider.GetElapsedTime(start)` in the callback call will be <em>1 second</em>, <em>2 seconds</em>,
532532
and <em>3 seconds</em>. In other words, the time of the provider is set before the time callback is invoked
533533
to the time that the callback is scheduled to be invoked at.
@@ -536,7 +536,7 @@ If the desired result is to jump to the time specified in [value](TimeProviderEx
536536
the expected number of times, i.e. such that the result of `manualTimeProvider.GetElapsedTime(start)` in the callback is
537537
<em>3 seconds</em>, <em>3 seconds</em>, and <em>3 seconds</em>, use [Jump(DateTimeOffset)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Jump(System.DateTimeOffset) 'TimeProviderExtensions.ManualTimeProvider.Jump(System.DateTimeOffset)') or [Jump(TimeSpan)](TimeProviderExtensions.ManualTimeProvider.md#TimeProviderExtensions.ManualTimeProvider.Jump(System.TimeSpan) 'TimeProviderExtensions.ManualTimeProvider.Jump(System.TimeSpan)') instead.
538538

539-
Learn more about this behavior at [https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider](https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider 'https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider').
539+
Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. ///
540540
541541
<a name='TimeProviderExtensions.ManualTimeProvider.ToString()'></a>
542542

src/TimeProviderExtensions/ManualTimeProvider.cs

Lines changed: 19 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ namespace TimeProviderExtensions;
88
/// Represents a synthetic time provider that can be used to enable deterministic behavior in tests.
99
/// </summary>
1010
/// <remarks>
11-
/// Learn more at <see href="https://github.com/egil/TimeProviderExtensions"/>.
11+
/// Learn more at <a href="https://github.com/egil/TimeProviderExtensions">TimeProviderExtensions on GitHub</a>.
1212
/// </remarks>
1313
[DebuggerDisplay("UtcNow: {ToString(),nq}. Active timers: {ActiveTimers}. {AutoAdvanceBehavior,nq}.")]
1414
public class ManualTimeProvider : TimeProvider
@@ -232,14 +232,14 @@ public void SetLocalTimeZone(TimeZoneInfo localTimeZone)
232232
/// For example:
233233
/// <code>
234234
/// var start = sut.GetTimestamp();
235-
///
235+
///
236236
/// var timer = manualTimeProvider.CreateTimer(
237237
/// callback: _ => manualTimeProvider.GetElapsedTime(start),
238238
/// state: null,
239239
/// dueTime: Span.FromSecond(1),
240240
/// period: TimeSpan.FromSecond(1));
241-
///
242-
/// manualtTimeProvider.Advance(TimeSpan.FromSecond(3));
241+
///
242+
/// manualTimeProvider.Advance(TimeSpan.FromSecond(3));
243243
/// </code>
244244
/// The call to <c>Advance(TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
245245
/// and the result of the <c>manualTimeProvider.GetElapsedTime(start)</c> in the callback call will be <em>1 second</em>, <em>2 seconds</em>,
@@ -252,7 +252,7 @@ public void SetLocalTimeZone(TimeZoneInfo localTimeZone)
252252
/// <em>3 seconds</em>, <em>3 seconds</em>, and <em>3 seconds</em>, use <see cref="Jump(DateTimeOffset)"/> or <see cref="Jump(TimeSpan)"/> instead.
253253
/// </para>
254254
/// <para>
255-
/// Learn more about this behavior at <see href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider"/>.
255+
/// Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>.
256256
/// </para>
257257
/// </remarks>
258258
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="delta"/> is negative. Going back in time is not supported.</exception>
@@ -290,16 +290,16 @@ public void Advance(TimeSpan delta)
290290
/// For example:
291291
/// <code>
292292
/// var start = sut.GetTimestamp();
293-
///
293+
///
294294
/// var timer = manualTimeProvider.CreateTimer(
295295
/// callback: _ => manualTimeProvider.GetElapsedTime(start),
296296
/// state: null,
297297
/// dueTime: Span.FromSecond(1),
298298
/// period: TimeSpan.FromSecond(1));
299-
///
300-
/// manualtTimeProvider.SetUtcNow(manualtTimeProvider.Start + TimeSpan.FromSecond(3));
299+
///
300+
/// manualTimeProvider.SetUtcNow(manualTimeProvider.Start + TimeSpan.FromSecond(3));
301301
/// </code>
302-
/// The call to <c>SetUtcNow(manualtTimeProvider.Start + TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
302+
/// The call to <c>SetUtcNow(manualTimeProvider.Start + TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
303303
/// and the result of the <c>manualTimeProvider.GetElapsedTime(start)</c> in the callback call will be <em>1 second</em>, <em>2 seconds</em>,
304304
/// and <em>3 seconds</em>. In other words, the time of the provider is set before the time callback is invoked
305305
/// to the time that the callback is scheduled to be invoked at.
@@ -310,8 +310,7 @@ public void Advance(TimeSpan delta)
310310
/// <em>3 seconds</em>, <em>3 seconds</em>, and <em>3 seconds</em>, use <see cref="Jump(DateTimeOffset)"/> or <see cref="Jump(TimeSpan)"/> instead.
311311
/// </para>
312312
/// <para>
313-
/// Learn more about this behavior at <see href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider"/>.
314-
/// </para>
313+
/// Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. /// </para>
315314
/// </remarks>
316315
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="value"/> is less than the value returned by <see cref="GetUtcNow()"/>. Going back in time is not supported.</exception>
317316
public void SetUtcNow(DateTimeOffset value)
@@ -376,14 +375,14 @@ public void SetUtcNow(DateTimeOffset value)
376375
/// For example:
377376
/// <code>
378377
/// var start = sut.GetTimestamp();
379-
///
378+
///
380379
/// var timer = manualTimeProvider.CreateTimer(
381380
/// callback: _ => manualTimeProvider.GetElapsedTime(start),
382381
/// state: null,
383382
/// dueTime: Span.FromSecond(1),
384383
/// period: TimeSpan.FromSecond(1));
385-
///
386-
/// manualtTimeProvider.Jump(TimeSpan.FromSecond(3));
384+
///
385+
/// manualTimeProvider.Jump(TimeSpan.FromSecond(3));
387386
/// </code>
388387
/// The call to <c>Jump(TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
389388
/// and the result of the <c>manualTimeProvider.GetElapsedTime(start)</c> in the callback call will be <em>3 seconds</em>
@@ -395,8 +394,7 @@ public void SetUtcNow(DateTimeOffset value)
395394
/// use <see cref="Advance(TimeSpan)"/> or <see cref="SetUtcNow(DateTimeOffset)"/> instead.
396395
/// </para>
397396
/// <para>
398-
/// Learn more about this behavior at <see href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider"/>.
399-
/// </para>
397+
/// Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. /// </para>
400398
/// </remarks>
401399
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="delta"/> is negative. Going back in time is not supported.</exception>
402400
public void Jump(TimeSpan delta)
@@ -433,16 +431,16 @@ public void Jump(TimeSpan delta)
433431
/// For example:
434432
/// <code>
435433
/// var start = sut.GetTimestamp();
436-
///
434+
///
437435
/// var timer = manualTimeProvider.CreateTimer(
438436
/// callback: _ => manualTimeProvider.GetElapsedTime(start),
439437
/// state: null,
440438
/// dueTime: Span.FromSecond(1),
441439
/// period: TimeSpan.FromSecond(1));
442440
///
443-
/// manualtTimeProvider.Jump(manualtTimeProvider.Start + TimeSpan.FromSecond(3));
441+
/// manualTimeProvider.Jump(manualTimeProvider.Start + TimeSpan.FromSecond(3));
444442
/// </code>
445-
/// The call to <c>Jump(manualtTimeProvider.Start + TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
443+
/// The call to <c>Jump(manualTimeProvider.Start + TimeSpan.FromSecond(3))</c> causes the <c>timer</c>s callback to be invoked three times,
446444
/// and the result of the <c>manualTimeProvider.GetElapsedTime(start)</c> in the callback call will be <em>3 seconds</em>
447445
/// during all three invocations.
448446
/// </para>
@@ -452,8 +450,7 @@ public void Jump(TimeSpan delta)
452450
/// use <see cref="Advance(TimeSpan)"/> or <see cref="SetUtcNow(DateTimeOffset)"/> instead.
453451
/// </para>
454452
/// <para>
455-
/// Learn more about this behavior at <see href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider"/>.
456-
/// </para>
453+
/// Learn more about this behavior at <a href="https://github.com/egil/TimeProviderExtensions/#difference-between-manualtimeprovider-and-faketimeprovider">in the documentation</a>. /// </para>
457454
/// </remarks>
458455
/// <exception cref="ArgumentOutOfRangeException">Thrown if <paramref name="value"/> is less than the value returned by <see cref="GetUtcNow()"/>. Going back in time is not supported.</exception>
459456
public void Jump(DateTimeOffset value)
@@ -479,7 +476,7 @@ public void Jump(DateTimeOffset value)
479476
// Calculates how many callbacks should have happened
480477
// in the jump period and invokes the callback that
481478
// number of times. Has to happen at least one time.
482-
var callbacksPassed = Math.Max(1, Math.Floor((double)jump.Ticks / scheduler.Period.Ticks));
479+
var callbacksPassed = (int)Math.Max(1, Math.Floor((double)jump.Ticks / scheduler.Period.Ticks));
483480

484481
// Invoke scheduler.TimerElapsed with scheduleNextCallback = false
485482
// to prevent duplicates in the callbacks collection.

src/TimeProviderExtensions/System.Runtime.CompilerServices/CallerArgumentExpressionAttribute.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
#if !NET6_0_OR_GREATER
2+
using System.Diagnostics.CodeAnalysis;
3+
24
namespace System.Runtime.CompilerServices;
35

6+
[ExcludeFromCodeCoverage]
47
[AttributeUsage(AttributeTargets.Parameter, AllowMultiple = false, Inherited = false)]
58
internal sealed class CallerArgumentExpressionAttribute : Attribute
69
{

src/TimeProviderExtensions/System.Runtime.CompilerServices/IsExternalInit.cs

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
#if NETSTANDARD2_0
22
// Licensed to the .NET Foundation under one or more agreements.
33
// The .NET Foundation licenses this file to you under the MIT license.
4-
4+
55
using System.ComponentModel;
6-
6+
using System.Diagnostics.CodeAnalysis;
7+
78
namespace System.Runtime.CompilerServices
89
{
910
/// <summary>
1011
/// Reserved to be used by the compiler for tracking metadata.
1112
/// This class should not be used by developers in source code.
1213
/// This dummy class is required to compile records when targeting .NET Standard
1314
/// </summary>
15+
[ExcludeFromCodeCoverage]
1416
[EditorBrowsable(EditorBrowsableState.Never)]
1517
internal static class IsExternalInit
1618
{

src/TimeProviderExtensions/System.Threading/PeriodicTimerPort.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ namespace TimeProviderExtensions;
1818
/// may be in flight at any given moment. <see cref="Dispose"/> may be used concurrently with an active <see cref="WaitForNextTickAsync"/>
1919
/// to interrupt it and cause it to return false.
2020
/// </remarks>
21+
[ExcludeFromCodeCoverage]
2122
internal sealed class PeriodicTimerPort : IDisposable
2223
{
2324
internal const uint MaxSupportedTimeout = 0xfffffffe;

src/TimeProviderExtensions/System.Threading/PeriodicTimerWrapper.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
#if NET6_0_OR_GREATER && !NET8_0_OR_GREATER
2+
using System.Diagnostics.CodeAnalysis;
23
using TimeProviderExtensions;
34

45
namespace System.Threading;
@@ -14,6 +15,7 @@ namespace System.Threading;
1415
/// to interrupt it and cause it to return false.
1516
/// </para>
1617
/// </remarks>
18+
[ExcludeFromCodeCoverage]
1719
public abstract class PeriodicTimerWrapper : IDisposable
1820
{
1921
/// <summary>Wait for the next tick of the timer, or for the timer to be stopped.</summary>

0 commit comments

Comments
 (0)