Skip to content

Commit 3914766

Browse files
committed
[Core] Add tests to improve coverage
1 parent 8b06f38 commit 3914766

31 files changed

+5068
-11
lines changed
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
// Copyright (c) .NET Foundation and Contributors (https://dotnetfoundation.org/ & https://stride3d.net)
2+
// Distributed under the MIT license. See the LICENSE.md file in the project root for more information.
3+
4+
using Xunit;
5+
6+
namespace Stride.Core.Tests;
7+
8+
public class AnonymousDisposableTests
9+
{
10+
[Fact]
11+
public void Constructor_WithNullAction_ThrowsArgumentNullException()
12+
{
13+
Assert.Throws<ArgumentNullException>(() => new AnonymousDisposable(null!));
14+
}
15+
16+
[Fact]
17+
public void Dispose_InvokesAction()
18+
{
19+
var disposed = false;
20+
var disposable = new AnonymousDisposable(() => disposed = true);
21+
22+
disposable.Dispose();
23+
24+
Assert.True(disposed);
25+
}
26+
27+
[Fact]
28+
public void Dispose_CalledMultipleTimes_InvokesActionOnlyOnce()
29+
{
30+
var disposeCount = 0;
31+
var disposable = new AnonymousDisposable(() => disposeCount++);
32+
33+
disposable.Dispose();
34+
disposable.Dispose();
35+
disposable.Dispose();
36+
37+
Assert.Equal(1, disposeCount);
38+
}
39+
40+
[Fact]
41+
public void Dispose_WithExceptionInAction_PropagatesException()
42+
{
43+
var disposable = new AnonymousDisposable(() => throw new InvalidOperationException("Test exception"));
44+
45+
Assert.Throws<InvalidOperationException>(() => disposable.Dispose());
46+
}
47+
48+
[Fact]
49+
public void Dispose_WithUsingStatement_InvokesAction()
50+
{
51+
var disposed = false;
52+
53+
using (new AnonymousDisposable(() => disposed = true))
54+
{
55+
Assert.False(disposed);
56+
}
57+
58+
Assert.True(disposed);
59+
}
60+
}

0 commit comments

Comments
 (0)