public void DefaultConstructor()
        {
            var actual = new TableDataValueComparerPipeElementArguments();

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, actual.MatchStatus);
            Assert.IsFalse(actual.IsCompared);
        }
        public void IsComparedSetOnNotMatch()
        {
            var actual = new TableDataValueComparerPipeElementArguments();
            actual.MatchStatus = MatchedValueComparer.NoMatch;

            Assert.IsTrue(actual.IsCompared);
        }
        public void BoolXStringY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = true, Y = "true" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void BoolXBoolYNotMatching()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = true, Y = false };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public void NotNullXNotNullY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "a", Y = "b" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void NullXNullY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = null, Y = null };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void StringXStringY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "23CB5003-ABDF-4CA3-B7F7-EA707D06DE40", Y = "{23CB5003-ABDF-4CA3-B7F7-EA707D06DE40}" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void GuidXIntY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = new Guid("{23CB5003-ABDF-4CA3-B7F7-EA707D06DE40}"), Y = 5 };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void GuidXGuidYNotMatching()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = new Guid("{3604134B-8010-4CF4-ADDA-9130D10168AE}"), Y = new Guid("{23CB5003-ABDF-4CA3-B7F7-EA707D06DE40}") };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public void StringXNullYMatch()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "a", Y = (string)null };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void BoolXIntY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = true, Y = 5 };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void DateTimeXIntY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = new DateTime(2000, 05, 18), Y = 5 };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void StringXStringY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "18/05/2000", Y = "18 May 2000 00:00:00" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void StringXDateTimeY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "2000-05-18", Y = new DateTime(2000, 05, 18) };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void DateTimeXStringY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = new DateTime(2000, 05, 18), Y = "18 May 2000" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void DecimalXIntYMatching()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = 5.0m, Y = 5 };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }
        public void DateTimeXDateTimeYNotMatching()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = new DateTime(2000, 05, 18), Y = new DateTime(2010, 05, 18) };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public void DecimalXDecimalYNotMatching()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = 5.5m, Y = 10m };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public void DecimalXBoolY()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = 5.5m, Y = false };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NotYetCompared, args.MatchStatus);
        }
        public void StringXStringYNoMatch()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "a", Y = "A" };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public void TableDataDefaultValueAlreadyCompared()
        {
            var args = new TableDataValueComparerPipeElementArguments { MatchStatus = MatchedValueComparer.NoMatch, X = null, Y = null };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.NoMatch, args.MatchStatus);
        }
        public bool IsMatch(object x, object y)
        {
            var args = new TableDataValueComparerPipeElementArguments { X = x, Y = y };
            foreach (var element in elements)
            {
                element.Process(args);
            }

            return args.MatchStatus == MatchedValueComparer.IsMatch;
        }
        public void Process(TableDataValueComparerPipeElementArguments args)
        {
            if (args.MatchStatus != MatchedValueComparer.NotYetCompared) return;

            string x = args.X as string;
            string y = args.Y as string;

            if (x == null || y == null) return;

            args.MatchStatus = x.Equals(y) ? MatchedValueComparer.IsMatch : MatchedValueComparer.NoMatch;
        }
        public void Process(TableDataValueComparerPipeElementArguments args)
        {
            if (args.MatchStatus != MatchedValueComparer.NotYetCompared) return;

            DateTime? x = ConvertToDateTime(args.X);
            DateTime? y = ConvertToDateTime(args.Y);

            if (!x.HasValue || !y.HasValue) return;

            args.MatchStatus = x.Value.Equals(y.Value) ? MatchedValueComparer.IsMatch : MatchedValueComparer.NoMatch;
        }
        public void Process(TableDataValueComparerPipeElementArguments args)
        {
            if (args.MatchStatus != MatchedValueComparer.NotYetCompared) return;

            if (args.X == null)
            {
                args.MatchStatus = args.Y == null ? MatchedValueComparer.IsMatch : MatchedValueComparer.NoMatch;
                return;
            }
            if (args.Y == null)
            {
                args.MatchStatus = MatchedValueComparer.NoMatch;
                return;
            }
        }
        public void Process(TableDataValueComparerPipeElementArguments args)
        {
            if (args.MatchStatus != MatchedValueComparer.NotYetCompared) return;

            args.MatchStatus = args.X.ToString().Equals(args.Y.ToString()) ? MatchedValueComparer.IsMatch : MatchedValueComparer.NoMatch;
        }
        public void StringXDecimalYPadded()
        {
            var args = new TableDataValueComparerPipeElementArguments { X = "05.50", Y = 5.5m };

            comparer.Process(args);

            Assert.AreEqual(MatchedValueComparer.IsMatch, args.MatchStatus);
        }