Dreamine.FullKit.Wpf.Tests
1.0.0.0
Dreamine.FullKit.Wpf.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
Toggle main menu visibility
로딩중...
검색중...
일치하는것 없음
PlcWpfTests.cs
이 파일의 문서화 페이지로 가기
1
using
System.Globalization;
2
using
System.Windows.Data;
3
using
System.Windows.Media;
4
using
Dreamine.MVVM.ViewModels;
5
using
Dreamine.PLC.Abstractions.Connections;
6
using
Dreamine.PLC.Abstractions.Devices;
7
using
Dreamine.PLC.Wpf.Commands;
8
using
Dreamine.PLC.Wpf.Converters;
9
using
Dreamine.PLC.Wpf.Models;
10
using
Dreamine.PLC.Wpf.Services;
11
12
namespace
Dreamine.FullKit.Wpf.Tests.PLC
;
13
22
public
sealed
class
PlcWpfTests
23
{
32
[Fact]
33
public
void
RelayCommand_ExecutesOnlyWhenAllowed
()
34
{
35
var count = 0;
36
var command =
new
RelayCommand(() => count++, () =>
false
);
37
38
command.Execute(
null
);
39
40
Assert.False(command.CanExecute(
null
));
41
Assert.Equal(0, count);
42
}
43
60
[Fact]
61
public
async Task
AsyncRelayCommand_PreventsReentryWhileExecuting
()
62
{
63
var entered =
new
TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
64
var release =
new
TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);
65
var command =
new
AsyncRelayCommand(async () =>
66
{
67
entered.SetResult();
68
await release.Task;
69
});
70
71
command.Execute(
null
);
72
await entered.Task.WaitAsync(TimeSpan.FromSeconds(2));
73
74
Assert.False(command.CanExecute(
null
));
75
76
release.SetResult();
77
await Task.Delay(50);
78
79
Assert.True(command.CanExecute(
null
));
80
}
81
98
[Fact]
99
public
async Task
AsyncRelayCommand_CapturesExecutionException
()
100
{
101
var failed =
new
TaskCompletionSource<Exception>(TaskCreationOptions.RunContinuationsAsynchronously);
102
var command =
new
AsyncRelayCommand(() =>
throw
new
InvalidOperationException(
"boom"
));
103
command.ExecutionFailed += (_, ex) => failed.SetResult(ex);
104
105
command.Execute(
null
);
106
var exception = await failed.Task.WaitAsync(TimeSpan.FromSeconds(2));
107
108
Assert.IsType<InvalidOperationException>(exception);
109
Assert.Same(exception, command.LastException);
110
Assert.True(command.CanExecute(
null
));
111
}
112
121
[Fact]
122
public
void
DelegateCommand_UsesParameter
()
123
{
124
object
? received =
null
;
125
var command =
new
DelegateCommand(parameter => received = parameter, parameter => Equals(parameter,
"ok"
));
126
127
command.Execute(
"no"
);
128
command.Execute(
"ok"
);
129
130
Assert.Equal(
"ok"
, received);
131
}
132
141
[Fact]
142
public
void
PlcConnectionStateBrushConverter_MapsStatesToBrushes
()
143
{
144
var converter =
new
PlcConnectionStateBrushConverter();
145
146
Assert.Same(Brushes.ForestGreen, converter.Convert(PlcConnectionState.Connected, typeof(Brush),
null
!, CultureInfo.InvariantCulture));
147
Assert.Same(Brushes.DarkOrange, converter.Convert(PlcConnectionState.Connecting, typeof(Brush),
null
!, CultureInfo.InvariantCulture));
148
Assert.Same(Brushes.Firebrick, converter.Convert(PlcConnectionState.Faulted, typeof(Brush),
null
!, CultureInfo.InvariantCulture));
149
Assert.Same(Brushes.Gray, converter.Convert(PlcConnectionState.Disconnected, typeof(Brush),
null
!, CultureInfo.InvariantCulture));
150
Assert.Equal(Binding.DoNothing, converter.ConvertBack(Brushes.Gray, typeof(PlcConnectionState),
null
!, CultureInfo.InvariantCulture));
151
}
152
161
[Fact]
162
public
void
PlcOperationLogItem_StoresValues
()
163
{
164
var item =
new
PlcOperationLogItem
165
{
166
Operation =
"Read"
,
167
Address =
"D100"
,
168
Values =
"1,2"
,
169
IsSuccess =
true
,
170
Message =
"OK"
171
};
172
173
Assert.Equal(
"Read"
, item.Operation);
174
Assert.Equal(
"D100"
, item.Address);
175
Assert.True(item.IsSuccess);
176
}
177
186
[Fact]
187
public
void
PlcPlaceholderReplacements_ExposeUsefulMonitorTypes
()
188
{
189
var address =
new
PlcAddressViewItem
190
{
191
DeviceType = PlcDeviceType.M,
192
Offset = 10,
193
BitOffset = 2,
194
DisplayName =
"Motor ready"
195
};
196
var channel =
new
PlcChannelViewItem
197
{
198
Name =
"Line 1"
,
199
State = PlcConnectionState.Connected,
200
Description =
"Main PLC"
201
};
202
using
var service =
new
TestAsyncDisposable
(
new
PlcMonitorService());
203
204
Assert.Equal(
new
PlcAddress(PlcDeviceType.M, 10, 2), address.ToAddress());
205
Assert.Equal(
"Line 1"
, channel.Name);
206
Assert.Equal(PlcConnectionState.Connected, channel.State);
207
Assert.NotNull(service.Value.ViewModel);
208
}
209
218
private
sealed
class
TestAsyncDisposable
: IDisposable
219
{
236
public
TestAsyncDisposable
(PlcMonitorService value)
237
{
238
Value
= value;
239
}
240
249
public
PlcMonitorService
Value
{
get
; }
250
259
public
void
Dispose
()
260
{
261
Value
.DisposeAsync().AsTask().GetAwaiter().GetResult();
262
}
263
}
264
}
Dreamine.FullKit.Wpf.Tests.PLC
Definition
PlcWpfTests.cs:12
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests
Definition
PlcWpfTests.cs:23
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.PlcPlaceholderReplacements_ExposeUsefulMonitorTypes
void PlcPlaceholderReplacements_ExposeUsefulMonitorTypes()
Definition
PlcWpfTests.cs:187
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.AsyncRelayCommand_PreventsReentryWhileExecuting
async Task AsyncRelayCommand_PreventsReentryWhileExecuting()
Definition
PlcWpfTests.cs:61
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.AsyncRelayCommand_CapturesExecutionException
async Task AsyncRelayCommand_CapturesExecutionException()
Definition
PlcWpfTests.cs:99
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.DelegateCommand_UsesParameter
void DelegateCommand_UsesParameter()
Definition
PlcWpfTests.cs:122
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.PlcOperationLogItem_StoresValues
void PlcOperationLogItem_StoresValues()
Definition
PlcWpfTests.cs:162
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.PlcConnectionStateBrushConverter_MapsStatesToBrushes
void PlcConnectionStateBrushConverter_MapsStatesToBrushes()
Definition
PlcWpfTests.cs:142
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.RelayCommand_ExecutesOnlyWhenAllowed
void RelayCommand_ExecutesOnlyWhenAllowed()
Definition
PlcWpfTests.cs:33
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.TestAsyncDisposable
Definition
PlcWpfTests.cs:219
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.TestAsyncDisposable.TestAsyncDisposable
TestAsyncDisposable(PlcMonitorService value)
Definition
PlcWpfTests.cs:236
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.TestAsyncDisposable.Dispose
void Dispose()
Definition
PlcWpfTests.cs:259
Dreamine.FullKit.Wpf.Tests.PLC.PlcWpfTests.TestAsyncDisposable.Value
PlcMonitorService Value
Definition
PlcWpfTests.cs:249
PLC
PlcWpfTests.cs
다음에 의해 생성됨 :
1.17.0