Skip to content

Commit bb2eb4e

Browse files
committed
Add more BrowserWindowTests (window state)
1 parent 03e9cb3 commit bb2eb4e

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

src/ElectronNET.IntegrationTests/Tests/BrowserWindowTests.cs

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,89 @@ public async Task Represented_filename_and_edited_flags()
238238

239239
win.SetDocumentEdited(false);
240240
}
241+
[Fact(Timeout = 20000)]
242+
public async Task Fullscreen_events_fire_on_toggle()
243+
{
244+
var window = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions { Show = true, Fullscreenable = true }, "about:blank");
245+
try
246+
{
247+
bool entered = false, left = false;
248+
window.OnEnterFullScreen += () => entered = true;
249+
window.OnLeaveFullScreen += () => left = true;
250+
await Task.Delay(400);
251+
252+
window.SetFullScreen(true);
253+
await WaitUntil(() => Task.FromResult(entered), 4000);
254+
entered.Should().BeTrue();
255+
256+
window.SetFullScreen(false);
257+
await WaitUntil(() => Task.FromResult(left), 4000);
258+
left.Should().BeTrue();
259+
}
260+
finally
261+
{
262+
window.Destroy();
263+
}
264+
}
265+
266+
[Fact(Timeout = 20000)]
267+
public async Task Maximize_and_unmaximize_events_fire()
268+
{
269+
var window = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions { Show = true }, "about:blank");
270+
try
271+
{
272+
bool maximized = false, unmaximized = false;
273+
window.OnMaximize += () => maximized = true;
274+
window.OnUnmaximize += () => unmaximized = true;
275+
await Task.Delay(500);
276+
window.Maximize();
277+
await Task.Delay(1500);
278+
maximized.Should().BeTrue();
279+
window.Unmaximize();
280+
await Task.Delay(1500);
281+
unmaximized.Should().BeTrue();
282+
}
283+
finally
284+
{
285+
window.Destroy();
286+
}
287+
}
288+
289+
[Fact(Timeout = 20000)]
290+
public async Task Minimize_and_restore_events_fire()
291+
{
292+
var window = await Electron.WindowManager.CreateWindowAsync(new BrowserWindowOptions { Show = true }, "about:blank");
293+
try
294+
{
295+
bool minimized = false, restored = false;
296+
window.OnMinimize += () => minimized = true;
297+
window.OnRestore += () => restored = true;
298+
await Task.Delay(500);
299+
window.Minimize();
300+
await Task.Delay(1500); // minimize may take longer
301+
minimized.Should().BeTrue();
302+
window.Restore();
303+
await Task.Delay(1500);
304+
restored.Should().BeTrue();
305+
}
306+
finally
307+
{
308+
window.Destroy();
309+
}
310+
}
311+
312+
private static async Task<bool> WaitUntil(Func<Task<bool>> predicate, int timeoutMs, int pollIntervalMs = 100)
313+
{
314+
var start = DateTime.UtcNow;
315+
while ((DateTime.UtcNow - start).TotalMilliseconds < timeoutMs)
316+
{
317+
if (await predicate().ConfigureAwait(false))
318+
{
319+
return true;
320+
}
321+
await Task.Delay(pollIntervalMs).ConfigureAwait(false);
322+
}
323+
return await predicate().ConfigureAwait(false);
324+
}
241325
}
242326
}

0 commit comments

Comments
 (0)