Dreamine.FullKit.Tests 1.0.0.0
Dreamine.FullKit.Tests 기능을 검증하는 자동화 테스트 프로젝트입니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests 클래스 참조sealed

더 자세히 ...

클래스

class  TestViewModel

Public 멤버 함수

void RelayCommand_ExecutesAndRaisesCanExecuteChanged ()
void GenericRelayCommand_RejectsInvalidParameter ()
void ViewModelBase_SetPropertyRaisesOnlyWhenValueChanges ()
async Task AsyncRelayCommand_PreventsConcurrentExecution ()
void AsyncRelayCommand_LastExceptionVisibleAfterFailure ()

상세한 설명

View Model And Relay Command Tests 기능과 관련 상태를 캡슐화합니다.

ViewModelAndRelayCommandTests.cs 파일의 15 번째 라인에서 정의되었습니다.

멤버 함수 문서화

◆ AsyncRelayCommand_LastExceptionVisibleAfterFailure()

void Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests.AsyncRelayCommand_LastExceptionVisibleAfterFailure ( )
inline

Async Relay Command Last Exception Visible After Failure 작업을 수행합니다.

ViewModelAndRelayCommandTests.cs 파일의 129 번째 라인에서 정의되었습니다.

130 {
131 var ex = new InvalidOperationException("test");
132 var command = new AsyncRelayCommand(() => Task.FromException(ex));
133
134 command.Execute(null);
135 Thread.Sleep(50);
136
137 Assert.Same(ex, command.LastException);
138 }

◆ AsyncRelayCommand_PreventsConcurrentExecution()

async Task Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests.AsyncRelayCommand_PreventsConcurrentExecution ( )
inline

Async Relay Command Prevents Concurrent Execution 작업을 수행합니다.

반환값
Async Relay Command Prevents Concurrent Execution 작업에서 생성한 Task 결과입니다.

ViewModelAndRelayCommandTests.cs 파일의 101 번째 라인에서 정의되었습니다.

102 {
103 var concurrentCount = 0;
104 var maxConcurrent = 0;
105 var command = new AsyncRelayCommand(async () =>
106 {
107 var c = Interlocked.Increment(ref concurrentCount);
108 Interlocked.Exchange(ref maxConcurrent, Math.Max(Volatile.Read(ref maxConcurrent), c));
109 await Task.Delay(30);
110 Interlocked.Decrement(ref concurrentCount);
111 });
112
113 var tasks = Enumerable.Range(0, 10).Select(_ => Task.Run(() => command.Execute(null)));
114 await Task.WhenAll(tasks);
115 await Task.Delay(100); // let the one accepted execution finish
116
117 Assert.Equal(1, maxConcurrent);
118 }

◆ GenericRelayCommand_RejectsInvalidParameter()

void Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests.GenericRelayCommand_RejectsInvalidParameter ( )
inline

Generic Relay Command Rejects Invalid Parameter 작업을 수행합니다.

ViewModelAndRelayCommandTests.cs 파일의 50 번째 라인에서 정의되었습니다.

51 {
52 var command = new RelayCommand<int>(_ => { }, value => value > 0);
53
54 // CanExecute returns false for a bad parameter type — Execute silently no-ops.
55 Assert.False(command.CanExecute("bad"));
56 var executed = false;
57 command = new RelayCommand<int>(_ => executed = true, value => value > 0);
58 command.Execute("bad");
59 Assert.False(executed);
60 }

◆ RelayCommand_ExecutesAndRaisesCanExecuteChanged()

void Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests.RelayCommand_ExecutesAndRaisesCanExecuteChanged ( )
inline

Relay Command Executes And Raises Can Execute Changed 작업을 수행합니다.

ViewModelAndRelayCommandTests.cs 파일의 26 번째 라인에서 정의되었습니다.

27 {
28 var executed = false;
29 var raised = false;
30 var command = new RelayCommand(() => executed = true, () => true);
31 command.CanExecuteChanged += (_, _) => raised = true;
32
33 command.Execute(null);
34 command.RaiseCanExecuteChanged();
35
36 Assert.True(executed);
37 Assert.True(command.CanExecute(null));
38 Assert.True(raised);
39 }

◆ ViewModelBase_SetPropertyRaisesOnlyWhenValueChanges()

void Dreamine.FullKit.Tests.ViewModels.ViewModelAndRelayCommandTests.ViewModelBase_SetPropertyRaisesOnlyWhenValueChanges ( )
inline

View Model Base Set Property Raises Only When Value Changes 작업을 수행합니다.

ViewModelAndRelayCommandTests.cs 파일의 71 번째 라인에서 정의되었습니다.

72 {
73 var viewModel = new TestViewModel();
74 var propertyNames = new List<string?>();
75 viewModel.PropertyChanged += (_, args) => propertyNames.Add(args.PropertyName);
76
77 viewModel.Name = "one";
78 viewModel.Name = "one";
79 viewModel.Name = "two";
80
81 Assert.Equal(new[] { "Name", "Name" }, propertyNames);
82 }

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: