public void GetValidationResultFor_EmptyString_GetsErrorsForEntireObject() { // Arrange var vm = new MockViewModel(); // Act vm.StringProperty = null; // Assert Assert.False(string.IsNullOrEmpty(vm.GetErrors("").Cast<string>().FirstOrDefault())); }
public void RangeProperties_ChangeFromInvalidToValid_ValidationErrorsDisappear() { // Arrange var vm = new MockViewModel(); // Act vm.RangeStart = 10; vm.RangeEnd = 1; // Assert Assert.False(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast<string>().FirstOrDefault())); Assert.False(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast<string>().FirstOrDefault())); // Act vm.RangeEnd = 11; // Assert Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast<string>().FirstOrDefault())); Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast<string>().FirstOrDefault())); }
public void SuppressValidation_SetInvalidValue_ThereAreNoErrors() { // Arrange var vm = new MockViewModel(); // Act using (vm.Validation.SuppressValidation()) { vm.RangeStart = 10; vm.RangeEnd = 1; } // Verify Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast<string>().FirstOrDefault())); Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast<string>().FirstOrDefault())); }
public void StringProperty_ValidValue_DoesNotHaveValidationError() { // Arrange var vm = new MockViewModel(); // Act vm.StringProperty = "Not empty string"; // Assert Assert.False(vm.GetErrors("StringProperty").Cast<string>().Any()); }
public void StringProperty_InvalidValue_HasValidationError() { // Arrange var vm = new MockViewModel(); // Act vm.StringProperty = null; // Assert Assert.True(vm.GetErrors("StringProperty").Cast<string>().Any()); }
public void RangeProperties_ValidRange_NonOfThePropertiesHaveValidationError() { // Arrange var vm = new MockViewModel(); // Act vm.RangeStart = 1; vm.RangeEnd = 10; // Assert Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeStart").Cast<string>().FirstOrDefault())); Assert.True(string.IsNullOrEmpty(vm.GetErrors("RangeEnd").Cast<string>().FirstOrDefault())); }
public void AsyncValidation_InvalidValue_CallsValidationRuleInBackgroundThreadAndReportsInvalidOnUIThread() { TestUtils.ExecuteWithDispatcher((uiThreadDispatcher, completedAction) => { int validationExecutionThreadID = -1; bool validationRuleCalled = false; var vm = new MockViewModel(); // When the rule gets executed verify that it gets executed in a background thread (doesn't block the UI) vm.SyncValidationRuleExecutedAsyncroniouslyDelegate = () => { validationRuleCalled = true; validationExecutionThreadID = Thread.CurrentThread.ManagedThreadId; // VERIFY if (validationExecutionThreadID == uiThreadDispatcher.Thread.ManagedThreadId) { Assert.True(false, "Validation rule must be called on a different thread than UI thread."); } }; using (vm.Validation.SuppressValidation()) { // Set the valid value first vm.StringProperty2 = "Valid value"; } vm.Validation.ResultChanged += (o, e) => { // VERIFY int validationCompletedThreadID = Thread.CurrentThread.ManagedThreadId; if (validationCompletedThreadID != uiThreadDispatcher.Thread.ManagedThreadId) { Assert.True(false, "ValidationCompleted must be called on the UI thread."); } if (!validationRuleCalled) { Assert.True(false, "Validation rule hasn't been called before validation completed."); } if (validationExecutionThreadID == validationCompletedThreadID) { Assert.True(false, "Validation execution thread must be a different thread than validation completed thread"); } Assert.False(e.NewResult.IsValid, "Validation must fail"); completedAction(); }; // ACT vm.StringProperty2 = null; }); }