Skip to content

Commit 09f1fc8

Browse files
Added WeakEventManager UnitTests
1 parent a815ac5 commit 09f1fc8

File tree

1 file changed

+319
-0
lines changed

1 file changed

+319
-0
lines changed
Lines changed: 319 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,319 @@
1+
using System;
2+
using NUnit.Framework;
3+
namespace AsyncAwaitBestPractices.UnitTests
4+
{
5+
public class Tests_WeakEventManager : BaseTest
6+
{
7+
readonly WeakEventManager _testWeakEventManager = new WeakEventManager();
8+
readonly WeakEventManager<string> _testStringWeakEventManager = new WeakEventManager<string>();
9+
10+
event EventHandler TestEvent
11+
{
12+
add => _testWeakEventManager.AddEventHandler(value);
13+
remove => _testWeakEventManager.RemoveEventHandler(value);
14+
}
15+
16+
event EventHandler<string> TestStringEvent
17+
{
18+
add => _testStringWeakEventManager.AddEventHandler(value);
19+
remove => _testStringWeakEventManager.RemoveEventHandler(value);
20+
}
21+
22+
[Test]
23+
public void WeakEventManager_HandleEvent_ValidImplementation()
24+
{
25+
//Arrange
26+
TestEvent += HandleTestEvent;
27+
bool didEventFire = false;
28+
29+
void HandleTestEvent(object sender, EventArgs e)
30+
{
31+
Assert.IsNotNull(sender);
32+
Assert.AreEqual(this.GetType(), sender.GetType());
33+
34+
Assert.IsNotNull(e);
35+
36+
didEventFire = true;
37+
TestEvent -= HandleTestEvent;
38+
}
39+
40+
//Act
41+
_testWeakEventManager?.HandleEvent(this, new EventArgs(), nameof(TestEvent));
42+
43+
//Assert
44+
Assert.IsTrue(didEventFire);
45+
}
46+
47+
[Test]
48+
public void WeakEventManager_HandleEvent_NullSender()
49+
{
50+
//Arrange
51+
TestEvent += HandleTestEvent;
52+
bool didEventFire = false;
53+
54+
void HandleTestEvent(object sender, EventArgs e)
55+
{
56+
Assert.IsNull(sender);
57+
Assert.IsNotNull(e);
58+
59+
didEventFire = true;
60+
TestEvent -= HandleTestEvent;
61+
}
62+
63+
//Act
64+
_testWeakEventManager?.HandleEvent(null, new EventArgs(), nameof(TestEvent));
65+
66+
//Assert
67+
Assert.IsTrue(didEventFire);
68+
}
69+
70+
[Test]
71+
public void WeakEventManager_HandleEvent_EmptyEventArgs()
72+
{
73+
//Arrange
74+
TestEvent += HandleTestEvent;
75+
bool didEventFire = false;
76+
77+
void HandleTestEvent(object sender, EventArgs e)
78+
{
79+
Assert.IsNotNull(sender);
80+
Assert.AreEqual(this.GetType(), sender.GetType());
81+
82+
Assert.IsNotNull(e);
83+
Assert.AreEqual(EventArgs.Empty, e);
84+
85+
didEventFire = true;
86+
TestEvent -= HandleTestEvent;
87+
}
88+
89+
//Act
90+
_testWeakEventManager?.HandleEvent(this, EventArgs.Empty, nameof(TestEvent));
91+
92+
//Assert
93+
Assert.IsTrue(didEventFire);
94+
}
95+
96+
[Test]
97+
public void WeakEventManager_HandleEvent_NullEventArgs()
98+
{
99+
//Arrange
100+
TestEvent += HandleTestEvent;
101+
bool didEventFire = false;
102+
103+
void HandleTestEvent(object sender, EventArgs e)
104+
{
105+
Assert.IsNotNull(sender);
106+
Assert.AreEqual(this.GetType(), sender.GetType());
107+
108+
Assert.IsNull(e);
109+
110+
didEventFire = true;
111+
TestEvent -= HandleTestEvent;
112+
}
113+
114+
//Act
115+
_testWeakEventManager?.HandleEvent(this, null, nameof(TestEvent));
116+
117+
//Assert
118+
Assert.IsTrue(didEventFire);
119+
}
120+
121+
[Test]
122+
public void WeakEventManager_HandleEvent_InvalidHandleEvent()
123+
{
124+
//Arrange
125+
TestEvent += HandleTestEvent;
126+
bool didEventFire = false;
127+
128+
void HandleTestEvent(object sender, EventArgs e) => didEventFire = true;
129+
130+
//Act
131+
_testWeakEventManager?.HandleEvent(this, new EventArgs(), nameof(TestStringEvent));
132+
133+
//Assert
134+
Assert.False(didEventFire);
135+
TestEvent -= HandleTestEvent;
136+
}
137+
138+
[Test]
139+
public void WeakEventManager_UnassignedEvent()
140+
{
141+
//Arrange
142+
bool didEventFire = false;
143+
144+
TestEvent += HandleTestEvent;
145+
TestEvent -= HandleTestEvent;
146+
void HandleTestEvent(object sender, EventArgs e) => didEventFire = true;
147+
148+
//Act
149+
_testWeakEventManager.HandleEvent(null, null, nameof(TestEvent));
150+
151+
//Assert
152+
Assert.IsFalse(didEventFire);
153+
}
154+
155+
[Test]
156+
public void WeakEventManager_UnassignedEventManager()
157+
{
158+
//Arrange
159+
var unassignedEventManager = new WeakEventManager();
160+
bool didEventFire = false;
161+
162+
TestEvent += HandleTestEvent;
163+
void HandleTestEvent(object sender, EventArgs e) => didEventFire = true;
164+
165+
//Act
166+
unassignedEventManager.HandleEvent(null, null, nameof(TestEvent));
167+
168+
//Assert
169+
Assert.IsFalse(didEventFire);
170+
TestEvent -= HandleTestEvent;
171+
}
172+
173+
[Test]
174+
public void WeakEventManagerTEventArgs_HandleEvent_ValidImplementation()
175+
{
176+
//Arrange
177+
TestStringEvent += HandleTestEvent;
178+
179+
const string stringEventArg = "Test";
180+
bool didEventFire = false;
181+
182+
void HandleTestEvent(object sender, string e)
183+
{
184+
Assert.IsNotNull(sender);
185+
Assert.AreEqual(this.GetType(), sender.GetType());
186+
187+
Assert.IsNotNull(e);
188+
Assert.AreEqual(stringEventArg, e);
189+
190+
didEventFire = true;
191+
TestStringEvent -= HandleTestEvent;
192+
}
193+
194+
//Act
195+
_testStringWeakEventManager?.HandleEvent(this, stringEventArg, nameof(TestStringEvent));
196+
197+
//Assert
198+
Assert.IsTrue(didEventFire);
199+
}
200+
201+
[Test]
202+
public void WeakEventManageTEventArgs_HandleEvent_NullSender()
203+
{
204+
//Arrange
205+
TestStringEvent += HandleTestEvent;
206+
207+
const string stringEventArg = "Test";
208+
209+
bool didEventFire = false;
210+
211+
void HandleTestEvent(object sender, string e)
212+
{
213+
Assert.IsNull(sender);
214+
215+
Assert.IsNotNull(e);
216+
Assert.AreEqual(stringEventArg, e);
217+
218+
didEventFire = true;
219+
TestStringEvent -= HandleTestEvent;
220+
}
221+
222+
//Act
223+
_testStringWeakEventManager?.HandleEvent(null, stringEventArg, nameof(TestStringEvent));
224+
225+
//Assert
226+
Assert.IsTrue(didEventFire);
227+
}
228+
229+
[Test]
230+
public void WeakEventManagerTEventArgs_HandleEvent_NullEventArgs()
231+
{
232+
//Arrange
233+
TestStringEvent += HandleTestEvent;
234+
bool didEventFire = false;
235+
236+
void HandleTestEvent(object sender, string e)
237+
{
238+
Assert.IsNotNull(sender);
239+
Assert.AreEqual(this.GetType(), sender.GetType());
240+
241+
Assert.IsNull(e);
242+
243+
didEventFire = true;
244+
TestStringEvent -= HandleTestEvent;
245+
}
246+
247+
//Act
248+
_testStringWeakEventManager?.HandleEvent(this, null, nameof(TestStringEvent));
249+
250+
//Assert
251+
Assert.IsTrue(didEventFire);
252+
}
253+
254+
[Test]
255+
public void WeakEventManagerTEventArgs_HandleEvent_InvalidHandleEvent()
256+
{
257+
//Arrange
258+
TestStringEvent += HandleTestEvent;
259+
260+
bool didEventFire = false;
261+
262+
void HandleTestEvent(object sender, string e) => didEventFire = true;
263+
264+
//Act
265+
_testStringWeakEventManager?.HandleEvent(this, "Test", nameof(TestEvent));
266+
267+
//Assert
268+
Assert.False(didEventFire);
269+
TestStringEvent -= HandleTestEvent;
270+
}
271+
272+
[Test]
273+
public void WeakEventManager_NullEventManager()
274+
{
275+
//Arrange
276+
WeakEventManager unassignedEventManager = null;
277+
278+
//Act
279+
280+
//Assert
281+
Assert.Throws<NullReferenceException>(() => unassignedEventManager.HandleEvent(null, null, nameof(TestEvent)));
282+
}
283+
284+
[Test]
285+
public void WeakEventManagerTEventArgs_UnassignedEventManager()
286+
{
287+
//Arrange
288+
var unassignedEventManager = new WeakEventManager<string>();
289+
bool didEventFire = false;
290+
291+
TestStringEvent += HandleTestEvent;
292+
void HandleTestEvent(object sender, string e) => didEventFire = true;
293+
294+
//Act
295+
unassignedEventManager.HandleEvent(null, null, nameof(TestStringEvent));
296+
297+
//Assert
298+
Assert.IsFalse(didEventFire);
299+
TestStringEvent -= HandleTestEvent;
300+
}
301+
302+
[Test]
303+
public void WeakEventManagerTEventArgs_UnassignedEvent()
304+
{
305+
//Arrange
306+
bool didEventFire = false;
307+
308+
TestStringEvent += HandleTestEvent;
309+
TestStringEvent -= HandleTestEvent;
310+
void HandleTestEvent(object sender, string e) => didEventFire = true;
311+
312+
//Act
313+
_testStringWeakEventManager.HandleEvent(this, "Test", nameof(TestStringEvent));
314+
315+
//Assert
316+
Assert.IsFalse(didEventFire);
317+
}
318+
}
319+
}

0 commit comments

Comments
 (0)