Dreamine.FullKit.Wpf.Tests 1.0.0.0
Dreamine.FullKit.Wpf.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
HybridTests.cs
이 파일의 문서화 페이지로 가기
1using System.Globalization;
2using System.Reflection;
3using System.Windows;
4using Dreamine.Hybrid.Messaging;
5using Dreamine.Hybrid.Interfaces;
6using Dreamine.Hybrid.State;
7using Dreamine.Hybrid.Wpf.Converters;
8using Dreamine.Hybrid.Wpf.Hosting;
9using Microsoft.AspNetCore.Components;
10using Microsoft.Extensions.DependencyInjection;
11using Dreamine.MVVM.Wpf;
12
14
23public sealed class HybridTests
24{
41 [Fact]
43 {
44 var bus = new InMemoryHybridMessageBus();
45 var received = new List<int>();
46
47 using var subscription = bus.Subscribe<TestMessage>((message, _) =>
48 {
49 received.Add(message.Value);
50 return Task.CompletedTask;
51 });
52
53 await bus.PublishAsync(new TestMessage(3));
54 subscription.Dispose();
55 await bus.PublishAsync(new TestMessage(4));
56
57 Assert.Equal(new[] { 3 }, received);
58 }
59
68 [Fact]
70 {
71 var store = new HybridStateStore<int>(1);
72 var states = new List<int>();
73 store.StateChanged += (_, args) => states.Add(args.State);
74
75 store.SetState(2);
76 store.Update(value => value + 3);
77
78 Assert.Equal(5, store.State);
79 Assert.Equal(new[] { 2, 5 }, states);
80 }
81
90 [Fact]
92 {
93 var store = new HybridStateStore<int>(1);
94 var states = new List<int>();
95
96 using (store.Subscribe((_, args) => states.Add(args.State)))
97 {
98 store.SetState(2);
99 }
100
101 store.SetState(3);
102
103 Assert.Equal(new[] { 2 }, states);
104 }
105
114 [Fact]
116 {
117 var converter = BooleanToVisibilityConverter.Instance;
118
119 Assert.Equal(Visibility.Visible, converter.Convert(true, typeof(Visibility), null!, CultureInfo.InvariantCulture));
120 Assert.Equal(Visibility.Collapsed, converter.Convert(false, typeof(Visibility), null!, CultureInfo.InvariantCulture));
121 Assert.True((bool)converter.ConvertBack(Visibility.Visible, typeof(bool), null!, CultureInfo.InvariantCulture));
122 Assert.False((bool)converter.ConvertBack(Visibility.Collapsed, typeof(bool), null!, CultureInfo.InvariantCulture));
123 }
124
133 [Fact]
135 {
136 var options = DreamineWpfOptions.CreateDefault();
137
138 Assert.True(options.EnableGlobalAutoWireOnLoaded);
139 Assert.True(options.RegisterDefaultServices);
140 Assert.True(options.EnableAutoNavigatorRegistration);
141 Assert.Equal("SubPage", options.DefaultRegionName);
142 }
143
152 [Fact]
154 {
155 var rootServices = new ServiceCollection();
156 rootServices.AddSingleton<DisposableSharedService>();
157 rootServices.AddSingleton<IHybridMessageBus, InMemoryHybridMessageBus>();
158
159 using ServiceProvider rootProvider = rootServices.BuildServiceProvider();
160 var options = new DreamineBlazorServerHostOptions();
161 options.SharedServiceTypes.Add(typeof(DisposableSharedService));
162
163 var service = new DreamineBlazorServerHostedService<TestRootComponent>(
164 rootProvider,
165 rootProvider.GetRequiredService<IHybridMessageBus>(),
166 options);
167
168 MethodInfo method = typeof(DreamineBlazorServerHostedService<TestRootComponent>)
169 .GetMethod("RegisterSharedServices", BindingFlags.Instance | BindingFlags.NonPublic)!;
170
171 var targetServices = new ServiceCollection();
172 TargetInvocationException exception = Assert.Throws<TargetInvocationException>(
173 () => method.Invoke(service, new object[] { targetServices }));
174
175 Assert.IsType<InvalidOperationException>(exception.InnerException);
176 }
177
186 [Fact]
188 {
189 _ = Dreamine.Hybrid.Wpf.Utility.DesignTimeGuard.IsInDesignMode;
190 }
191
200 private sealed class TestMessage : HybridMessageBase
201 {
218 public TestMessage(int value)
219 {
220 Value = value;
221 }
222
231 public int Value { get; }
232 }
233
242 private sealed class DisposableSharedService : IDisposable
243 {
252 public void Dispose()
253 {
254 }
255 }
256
265 private sealed class TestRootComponent : IComponent
266 {
283 public void Attach(RenderHandle renderHandle)
284 {
285 }
286
311 public Task SetParametersAsync(ParameterView parameters)
312 {
313 return Task.CompletedTask;
314 }
315 }
316}
async Task InMemoryHybridMessageBus_PublishesAndUnsubscribesByMessageType()