Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
ViewModelLocatorTests.cs
이 파일의 문서화 페이지로 가기
1using Dreamine.MVVM.Interfaces.Locators;
2using Dreamine.MVVM.Locators;
3
5
14public sealed class ViewModelLocatorTests : IDisposable
15{
25 {
26 ViewModelLocator.Reset();
27 }
28
37 public void Dispose()
38 {
39 ViewModelLocator.Reset();
40 }
41
50 [Fact]
52 {
53 var expected = new SampleViewModel();
54 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
55 ViewModelLocator.RegisterResolver(new FixedResolver(expected));
56
57 object? resolved = ViewModelLocator.Resolve(typeof(SampleView));
58
59 Assert.Same(expected, resolved);
60 }
61
70 [Fact]
72 {
73 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
74
75 var exception = Assert.Throws<InvalidOperationException>(
76 () => ViewModelLocator.Resolve(typeof(SampleView)));
77
78 Assert.Contains("no ViewModel resolver is configured", exception.Message);
79 Assert.DoesNotContain("Activator.CreateInstance", exception.Message);
80 }
81
90 [Fact]
92 {
93 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
94 ViewModelLocator.RegisterResolver(new NullResolver());
95
96 var exception = Assert.Throws<InvalidOperationException>(
97 () => ViewModelLocator.Resolve(typeof(SampleView)));
98
99 Assert.Contains("not resolved by the configured resolver", exception.Message);
100 }
101
110 [Fact]
112 {
113 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
114 ViewModelLocator.RegisterResolver(new FixedResolver(new SampleViewModel()));
115
116 ViewModelLocator.Reset();
117
118 Assert.Null(ViewModelLocator.Resolve(typeof(SampleView)));
119 }
120
129 [Fact]
131 {
132 var expected = new SampleViewModel();
133 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
134 ViewModelLocator.RegisterResolver(new FixedResolver(expected));
135
136 ViewModelLocator.Clear();
137 ViewModelLocator.Register(typeof(SampleView), typeof(SampleViewModel));
138
139 object? resolved = ViewModelLocator.Resolve(typeof(SampleView));
140
141 Assert.Same(expected, resolved);
142 }
143
152 private sealed class SampleView
153 {
154 }
155
164 private sealed class SampleViewModel
165 {
166 }
167
176 private sealed class FixedResolver : IViewModelResolver
177 {
186 private readonly object _instance;
187
204 public FixedResolver(object instance)
205 {
206 _instance = instance;
207 }
208
233 public object? Resolve(Type viewModelType)
234 {
235 return _instance.GetType() == viewModelType ? _instance : null;
236 }
237 }
238
247 private sealed class NullResolver : IViewModelResolver
248 {
273 public object? Resolve(Type viewModelType)
274 {
275 return null;
276 }
277 }
278}