public async void Test_EqualChecker() { var checker = new EqualChecker <ValidateContext, string>("a", _Validation); var result = await checker.ValidateAsync(checker.GetResult(), "b", "a", null); Assert.NotNull(result); Assert.Equal(false, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(1, result.Failures.Count); Assert.Equal("a", result.Failures[0].Name); Assert.Equal("b", result.Failures[0].Value); Assert.Equal("The value is not equal a", result.Failures[0].Error); result = await checker.ValidateAsync(checker.GetResult(), null, "a", "b"); Assert.NotNull(result); Assert.Equal(false, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(1, result.Failures.Count); Assert.Equal("a", result.Failures[0].Name); Assert.Equal(null, result.Failures[0].Value); Assert.Equal("b", result.Failures[0].Error); result = await checker.ValidateAsync(checker.GetResult(), "a", "a", "b"); Assert.NotNull(result); Assert.Equal(true, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(0, result.Failures.Count); }
public async void Test_EqualChecker() { var checker = new EqualChecker<ValidateContext, string>("a", _Validation); var result = await checker.ValidateAsync(checker.GetResult(), "b", "a", null); Assert.NotNull(result); Assert.Equal(false, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(1, result.Failures.Count); Assert.Equal("a", result.Failures[0].Name); Assert.Equal("b", result.Failures[0].Value); Assert.Equal("The value is not equal a", result.Failures[0].Error); result = await checker.ValidateAsync(checker.GetResult(), null, "a", "b"); Assert.NotNull(result); Assert.Equal(false, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(1, result.Failures.Count); Assert.Equal("a", result.Failures[0].Name); Assert.Equal(null, result.Failures[0].Value); Assert.Equal("b", result.Failures[0].Error); result = await checker.ValidateAsync(checker.GetResult(), "a", "a", "b"); Assert.NotNull(result); Assert.Equal(true, result.IsValid); Assert.NotNull(result.Failures); Assert.Equal(0, result.Failures.Count); }
public async Task DedupeItems() { bool dupeFound = true; while (dupeFound) { dupeFound = false; foreach (var itemA in State.Items.Values) { foreach (var itemB in State.Items.Values) { // If these are actually the same item instance then ignore if (itemA.TrackingId == itemB.TrackingId) { continue; } if (EqualChecker.AreEqual(itemA, itemB)) { dupeFound = true; // TODO: Not sure how we would update refs to itemB that are found in other object properties // TODO: Maybe we can raise an event here that can be subscribed to State.Items.Remove(itemB.TrackingId); await StackItems(itemB.TrackingId, itemA.TrackingId); break; } } if (dupeFound) { break; } } } await this.WriteStateAsync(); }
public override bool Equals(object obj) { return(EqualChecker.NonIEnumerableValuesEquals(this, obj)); }