Dreamine.FullKit.Tests
1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
HybridStateStoreTests.cs
이 파일의 문서화 페이지로 가기
1
using
Dreamine.Hybrid.State;
2
using
System.Threading;
3
4
namespace
Dreamine.FullKit.Tests.Hybrid
;
5
14
public
sealed
class
HybridStateStoreTests
15
{
24
[Fact]
25
public
void
SetState_UpdatesStateAndFiresEvent
()
26
{
27
var store =
new
HybridStateStore<int>(0);
28
var received =
new
List<int>();
29
store.StateChanged += (_, e) => received.Add(e.State);
30
31
store.SetState(1);
32
store.SetState(2);
33
34
Assert.Equal(2, store.State);
35
Assert.Equal(
new
[] { 1, 2 }, received);
36
}
37
46
[Fact]
47
public
void
Update_AppliesTransformAndFiresEvent
()
48
{
49
var store =
new
HybridStateStore<int>(10);
50
var received =
new
List<int>();
51
store.StateChanged += (_, e) => received.Add(e.State);
52
53
store.Update(x => x + 5);
54
55
Assert.Equal(15, store.State);
56
Assert.Single(received);
57
Assert.Equal(15, received[0]);
58
}
59
68
[Fact]
69
public
void
Subscribe_ReturnsDisposableThatUnsubscribes
()
70
{
71
var store =
new
HybridStateStore<int>(0);
72
var count = 0;
73
var sub = store.Subscribe((_, _) => count++);
74
75
store.SetState(1);
76
sub.Dispose();
77
store.SetState(2);
78
79
Assert.Equal(1, count);
80
}
81
90
[Fact]
91
public
void
Dispose_IsIdempotent
()
92
{
93
var store =
new
HybridStateStore<int>(0);
94
var count = 0;
95
var sub = store.Subscribe((_, _) => count++);
96
97
sub.Dispose();
98
sub.Dispose();
// second dispose must not throw or re-unsubscribe
99
100
store.SetState(1);
101
Assert.Equal(0, count);
102
}
103
120
[Fact]
121
public
async Task
SetState_ConcurrentCalls_AllEventsDelivered
()
122
{
123
const
int
iterations = 200;
124
var store =
new
HybridStateStore<int>(0);
125
var eventCount = 0;
126
127
store.StateChanged += (_, _) => Interlocked.Increment(ref eventCount);
128
129
var tasks = Enumerable.Range(1, iterations)
130
.Select(i => Task.Run(() => store.SetState(i)));
131
132
await Task.WhenAll(tasks);
133
134
// Every SetState must fire exactly one event — no event may be lost.
135
Assert.Equal(iterations, eventCount);
136
}
137
154
[Fact]
155
public
async Task
Update_ConcurrentCalls_StateRemainsConsistent
()
156
{
157
var store =
new
HybridStateStore<int>(0);
158
159
var tasks = Enumerable.Range(0, 100)
160
.Select(_ => Task.Run(() => store.Update(x => x + 1)));
161
162
await Task.WhenAll(tasks);
163
164
Assert.Equal(100, store.State);
165
}
166
}
Dreamine.FullKit.Tests.Hybrid
Definition
HybridStateStoreTests.cs:4
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests
Definition
HybridStateStoreTests.cs:15
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.Subscribe_ReturnsDisposableThatUnsubscribes
void Subscribe_ReturnsDisposableThatUnsubscribes()
Definition
HybridStateStoreTests.cs:69
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.SetState_UpdatesStateAndFiresEvent
void SetState_UpdatesStateAndFiresEvent()
Definition
HybridStateStoreTests.cs:25
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.Update_AppliesTransformAndFiresEvent
void Update_AppliesTransformAndFiresEvent()
Definition
HybridStateStoreTests.cs:47
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.Dispose_IsIdempotent
void Dispose_IsIdempotent()
Definition
HybridStateStoreTests.cs:91
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.Update_ConcurrentCalls_StateRemainsConsistent
async Task Update_ConcurrentCalls_StateRemainsConsistent()
Definition
HybridStateStoreTests.cs:155
Dreamine.FullKit.Tests.Hybrid.HybridStateStoreTests.SetState_ConcurrentCalls_AllEventsDelivered
async Task SetState_ConcurrentCalls_AllEventsDelivered()
Definition
HybridStateStoreTests.cs:121
Hybrid
HybridStateStoreTests.cs
다음에 의해 생성됨 :
1.17.0