Dreamine.FullKit.Wpf.Tests 1.0.0.0
Dreamine.FullKit.Wpf.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
ViewSwitcherTests.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.MVVM.Interfaces;
2using Dreamine.UI.Wpf.Controls.ViewRegion;
3
5
14public sealed class ViewSwitcherTests
15{
24 [Fact]
26 {
27 var vm = new TrackingViewModel();
28 ViewSwitcher.RegisterViewModel("TestView", vm);
29
30 ViewSwitcher.NotifyShown("TestView");
31
32 Assert.True(vm.Activated);
33 Assert.True(vm.Shown);
34 }
35
44 [Fact]
46 {
47 var vm = new TrackingViewModel();
48 ViewSwitcher.RegisterViewModel("TestView2", vm);
49
50 ViewSwitcher.NotifyShown("TestView2");
51 ViewSwitcher.NotifyHidden("TestView2");
52
53 Assert.True(vm.Hidden);
54 Assert.True(vm.Deactivated);
55 }
56
65 [Fact]
67 {
68 var ex = Record.Exception(() => ViewSwitcher.NotifyShown("NonExistentView_xyz"));
69 Assert.Null(ex);
70 }
71
80 [Fact]
82 {
83 var vm1 = new TrackingViewModel();
84 var vm2 = new TrackingViewModel();
85 ViewSwitcher.RegisterViewModel("OverwriteView", vm1);
86 ViewSwitcher.RegisterViewModel("OverwriteView", vm2);
87
88 ViewSwitcher.NotifyShown("OverwriteView");
89
90 Assert.False(vm1.Activated);
91 Assert.True(vm2.Activated);
92 }
93
102 private sealed class TrackingViewModel : IActivatable, IVisibilityAware
103 {
112 public bool Activated { get; private set; }
121 public bool Deactivated { get; private set; }
130 public bool Shown { get; private set; }
139 public bool Hidden { get; private set; }
140
149 public void Activate() => Activated = true;
158 public void Deactivate() => Deactivated = true;
167 public void OnShown() => Shown = true;
176 public void OnHidden() => Hidden = true;
177 }
178}