Exemple #1
0
        public void SetUp()
        {
            _comparer = new Comparer(new ComparisonSettings {
                UseDefaultIfMemberNotExist = true
            });
            //Some fields should be ignored
            _comparer.AddComparerOverride("ConnectionString", DoNotCompareValueComparer.Instance);
            _comparer.AddComparerOverride("Email", DoNotCompareValueComparer.Instance);
            _comparer.AddComparerOverride("Notifications", DoNotCompareValueComparer.Instance);
            //Smart Modes are disabled by default. These fields are not case sensitive
            var disabledByDefaultComparer = new DefaultValueValueComparer <string>("Disabled", IgnoreCaseStringsValueComparer.Instance);

            _comparer.AddComparerOverride("SmartMode1", disabledByDefaultComparer);
            _comparer.AddComparerOverride("SmartMode2", disabledByDefaultComparer);
            _comparer.AddComparerOverride("SmartMode3", disabledByDefaultComparer);
            //http prefix in URLs should be ignored
            var urlComparer = new DynamicValueComparer <string>(
                (url1, url2, settings) => url1.Trim('/').Replace(@"http://", string.Empty) == url2.Trim('/').Replace(@"http://", string.Empty));

            _comparer.AddComparerOverride("SomeUrl", urlComparer);
            _comparer.AddComparerOverride("SomeOtherUrl", urlComparer);
            //DataCompression is Off by default.
            _comparer.AddComparerOverride("DataCompression", new DefaultValueValueComparer <string>("Off", NulableStringsValueComparer.Instance));
            //ProcessTaskTimeout and TotalProcessTimeout fields have default values.
            _comparer.AddComparerOverride("ProcessTaskTimeout", new DefaultValueValueComparer <long>(100, DefaultValueComparer.Instance));
            _comparer.AddComparerOverride("TotalProcessTimeout", new DefaultValueValueComparer <long>(500, DefaultValueComparer.Instance));
        }
        public void CompareSecondArgumentNullNotValueType()
        {
            var comparer = new DynamicValueComparer <string>((s1, s2, settings) => s1 == s2, s => s);

            var result = comparer.Compare("23", null, new ComparisonSettings());

            Assert.IsFalse(result);
        }
        public void CompareWithDefaultToString(string str1, string str2, bool expectedResult)
        {
            var comparer = new DynamicValueComparer <string>((s1, s2, settings) => s1.Length == s2.Length);

            var result   = comparer.Compare(str1, str2, new ComparisonSettings());
            var toString = comparer.ToString(str1);

            Assert.AreEqual(expectedResult, result);
            Assert.AreEqual(str1, toString);
        }
        public void NulableType()
        {
            DateTime?dt1          = null;
            DateTime?dt2          = null;
            var      dateComparer = new DynamicValueComparer <DateTime?>
                                        ((date1, date2, settings) => date1 == date2 || (date1 != null && date2 != null && date1.Value.Date == date2.Value.Date));

            var comparer = new Comparer <DateTime?>();

            comparer.AddComparerOverride <DateTime?>(dateComparer);

            var result = comparer.Compare(dt1, dt2);

            Assert.IsTrue(result);
        }
        public void CompareSecondArgumentNullValueType()
        {
            var comparer = new DynamicValueComparer <int>((i1, i2, settings) => i1 == i2, i => i.ToString());

            Assert.Throws <ArgumentException>(() => comparer.Compare(23, null, new ComparisonSettings()));
        }
        public void CompareWrongSecondArgument()
        {
            var comparer = new DynamicValueComparer <string>((s1, s2, settings) => true, s => s);

            Assert.Throws <ArgumentException>(() => comparer.Compare("25", 25, new ComparisonSettings()));
        }