コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
 public override bool Equals(object obj)
 {
     return(EqualChecker.NonIEnumerableValuesEquals(this, obj));
 }