public void Bst()
        {
            var n        = 100000;
            var a        = RandomHelper.CreateData(n);
            var expected = (int[])a.Clone();

            var actual = new List <int>();
            var q      = new BstPriorityQueue <int>();

            foreach (var x in a)
            {
                q.Push(x);
            }
            while (q.Count > 0)
            {
                actual.Add(q.Pop());
            }

            Array.Sort(expected);
            CollectionAssert.AreEqual(expected, actual);

            actual.Clear();
            q = new BstPriorityQueue <int>(ComparerHelper <int> .Create(true));
            foreach (var x in a)
            {
                q.Push(x);
            }
            while (q.Count > 0)
            {
                actual.Add(q.Pop());
            }

            Array.Reverse(expected);
            CollectionAssert.AreEqual(expected, actual);
        }
        public void Keyed_1()
        {
            var n = 100000;
            var a = RandomHelper.CreateData(n);

            var actual = new List <int>();
            var q      = new KeyedPriorityQueue <int, int>(x => x / 10);

            foreach (var x in a)
            {
                q.Push(x);
            }
            while (q.Count > 0)
            {
                actual.Add(q.Pop());
            }

            var expected = a.OrderBy(x => x / 10).ToArray();

            CollectionAssert.AreEqual(expected, actual);

            actual.Clear();
            q = new KeyedPriorityQueue <int, int>(x => x / 10, ComparerHelper <int> .Create(true));
            foreach (var x in a)
            {
                q.Push(x);
            }
            while (q.Count > 0)
            {
                actual.Add(q.Pop());
            }

            expected = a.OrderByDescending(x => x / 10).ToArray();
            CollectionAssert.AreEqual(expected, actual);
        }
Example #3
0
        public void CreateComparerFromDelegate()
        {
            var source = new List <int> {
                1, 2, 3, 0, 4, 5, 6, 7
            };
            var comparer = ComparerHelper.CreateComparer <int>(
                (x, y) =>
            {
                if (x == 0)
                {
                    return(y == 0 ? 0 : -1);
                }

                if (y == 0)
                {
                    return(1);
                }

                return(y.CompareTo(x));
            });

            var sorted = source.OrderBy(x => x, comparer).ToList();

            var expected = new List <int> {
                0, 7, 6, 5, 4, 3, 2, 1
            };

            CollectionAssert.AreEqual(expected, sorted);
        }
Example #4
0
        public void CommonComparer_Test()
        {
            var testers        = Generate();
            var testersOrdered = testers.OrderBy(m => m.Id).ToArray();
            var comparer       = ComparerHelper.Create <Tester>((x, y) => Comparer <int> .Default.Compare(x.Id, y.Id));
            var sortList       = new SortedSet <Tester>(testers, comparer);

            Assert.True(testersOrdered.SequenceEqual(sortList));
        }
Example #5
0
        public void KeyComparer_Test()
        {
            var testers        = Generate();
            var testersOrdered = testers.OrderBy(m => m.Id).ToArray();
            var comparer       = ComparerHelper.Create <Tester, int>(m => m.Id);
            var sortList       = new SortedSet <Tester>(testers, comparer);

            Assert.True(testersOrdered.SequenceEqual(sortList));
        }
Example #6
0
 public void Test()
 {
     TestA a = new TestA()
     {
         Name = null
     };
     TestA b = new TestA()
     {
         Name = "",
     };
     var list = ComparerHelper.GetFieldModityRecords <TestA>(a, b);
 }
        public void Create()
        {
            var n        = 100000;
            var expected = RandomHelper.CreateData(n);
            var actual   = (int[])expected.Clone();

            Array.Sort(expected);
            Array.Sort(actual, ComparerHelper <int> .Create());
            CollectionAssert.AreEqual(expected, actual);

            Array.Reverse(expected);
            Array.Sort(actual, ComparerHelper <int> .Create(true));
            CollectionAssert.AreEqual(expected, actual);
        }
        public void Create_Key2()
        {
            var n      = 100000;
            var a      = RandomHelper.CreateData(n);
            var actual = (int[])a.Clone();

            var expected = a.OrderBy(x => x.ToString().Length).ThenByDescending(x => x).ToArray();

            Array.Sort(actual, ComparerHelper <int> .Create(x => x.ToString().Length, false, x => x, true));
            CollectionAssert.AreEqual(expected, actual);

            Array.Reverse(expected);
            Array.Sort(actual, ComparerHelper <int> .Create(x => x.ToString().Length, true, x => x, false));
            CollectionAssert.AreEqual(expected, actual);
        }
        public void Create_Key1()
        {
            var n      = 100000;
            var a      = RandomHelper.CreateData(n);
            var actual = (int[])a.Clone();

            var expected = a.OrderBy(x => x.ToString()).ToArray();

            Array.Sort(actual, ComparerHelper <int> .Create(x => x.ToString()));
            CollectionAssert.AreEqual(expected, actual);

            Array.Reverse(expected);
            Array.Sort(actual, ComparerHelper <int> .Create(x => x.ToString(), true));
            CollectionAssert.AreEqual(expected, actual);
        }
Example #10
0
        public void Min_ShouldReturnCorrectValue(
            int year1,
            int year2,
            int expectedYear)
        {
            //arrange
            var date1 = new DateTimeOffset(year1, 1, 1, 1, 1, 1, TimeSpan.Zero);
            var date2 = new DateTimeOffset(year2, 1, 1, 1, 1, 1, TimeSpan.Zero);
            var expected = new[] { date1, date2 }.First(d => d.Year == expectedYear);

            //act
            var actual = ComparerHelper.Min(date1, date2);

            //assert
            actual.Should().Be(expected);
        }
Example #11
0
        public static FilterDefinition GetFilter(string expression)
        {
            if (string.IsNullOrWhiteSpace(expression))
            {
                return(null);
            }
            expression = expression.Replace("  ", " ");
            expression = expression.Trim();

            var trysymbol = GetFilterBySymbol(expression);

            if (trysymbol != null)
            {
                return(trysymbol);
            }

            FilterDefinition filter = new FilterDefinition();
            int index = expression.IndexOf(" ");

            if (index == -1)
            {
                filter.FieldName  = expression;
                filter.Comparer   = Comparer.EqualTo;
                filter.FieldValue = "true";
            }
            else
            {
                filter.FieldName = expression.Substring(0, index);

                var nextindex = expression.IndexOf(" ", index + 1);

                if (nextindex == -1)
                {
                    string compare = expression.Substring(index).Trim();
                    filter.Comparer = ComparerHelper.GetComparer(compare);
                }
                else
                {
                    string compare = expression.Substring(index, nextindex - index);
                    filter.Comparer = ComparerHelper.GetComparer(compare);

                    filter.FieldValue = expression.Substring(nextindex).Trim();
                }
            }

            return(filter);
        }
        public HashSet(int c, Generic.IEqualityComparer <T> comparer)
        {
#if DEBUG
            if (comparer == null)
            {
                throw new ArgumentNullException("comparer should not be null!");
            }
#endif
            m_comparer  = comparer ?? ComparerHelper.GetComparer <T>();
            m_lastIndex = 0;
            Count       = 0;
            m_freeList  = -1;

            int prime = HashHelpers.GetPrime(c);
            m_buckets = new int[prime];
            m_slots   = new Slot[prime];
        }
Example #13
0
        /// <summary>
        /// Find the index of a rectangle that contains the specified point.
        /// </summary>
        /// <param name="point">the target point</param>
        /// <returns>the rectangle index</returns>
        private int FindRectangleIndex(ScreenPoint point)
        {
            IComparer <OxyRect> comparer;

            if (this.IsTransposed())
            {
                comparer = ComparerHelper.CreateComparer <OxyRect>(
                    (x, y) =>
                {
                    if (x.Bottom < point.Y)
                    {
                        return(1);
                    }

                    if (x.Top > point.Y)
                    {
                        return(-1);
                    }

                    return(0);
                });
            }
            else
            {
                comparer = ComparerHelper.CreateComparer <OxyRect>(
                    (x, y) =>
                {
                    if (x.Right < point.X)
                    {
                        return(-1);
                    }

                    if (x.Left > point.X)
                    {
                        return(1);
                    }

                    return(0);
                });
            }

            return(this.rectangles.BinarySearch(0, this.rectangles.Count, new OxyRect(), comparer));
        }
        /// <summary>
        /// Find the index of a rectangle that contains the specified point.
        /// </summary>
        /// <param name="point">the target point</param>
        /// <returns>the rectangle index</returns>
        private int FindRectangleIndex(ScreenPoint point)
        {
            var comparer = ComparerHelper.CreateComparer <OxyRect>(
                (x, y) =>
            {
                if (x.Right < point.X)
                {
                    return(-1);
                }

                if (x.Left > point.X)
                {
                    return(1);
                }

                return(0);
            });

            return(this.rectangles.BinarySearch(0, this.rectangles.Count, new OxyRect(), comparer));
        }
Example #15
0
        public static FilterDefinition GetFilterBySymbol(string expression)
        {
            foreach (var item in ComparerList)
            {
                int index = expression.IndexOf(item);
                if (index > -1)
                {
                    FilterDefinition filter = new FilterDefinition();

                    filter.FieldName = expression.Substring(0, index).Trim();

                    filter.FieldValue = expression.Substring(index + item.Length).Trim();

                    filter.Comparer = ComparerHelper.GetComparer(item);

                    return(filter);
                }
            }
            return(null);
        }
Example #16
0
 public int Compare(int[] left, int[] right)
 {
     return(ComparerHelper.CompareEmptyOrNull(left, right) ?? left.Max().CompareTo(right.Max()));
 }
Example #17
0
 public int Compare(int[] left, int[] right)
 {
     return(ComparerHelper.CompareEmptyOrNull(right, left) ?? right.Min().CompareTo(left.Min()));
 }
Example #18
0
        public static bool Check(string FieldValue, Comparer Comparer, string CompareValue, Type ClrType = null)
        {
            if (ClrType == null)
            {
                ClrType = ComparerHelper.DetermineCompareType(FieldValue, CompareValue);
            }

            if (ClrType == null)
            {
                return(false);
            }

            if (Comparer == Comparer.EqualTo)
            {
                return(Lib.Helper.StringHelper.IsSameValue(FieldValue, CompareValue));
            }
            else if (Comparer == Comparer.NotEqualTo)
            {
                return(!Lib.Helper.StringHelper.IsSameValue(FieldValue, CompareValue));
            }

            else if (Comparer == Comparer.Contains)
            {
                return(FieldValue.Contains(CompareValue));
            }
            else if (Comparer == Comparer.StartWith)
            {
                return(FieldValue.StartsWith(CompareValue));
            }

            else
            {
                try
                {
                    var value  = Convert.ChangeType(FieldValue, ClrType);
                    var tovale = Convert.ChangeType(CompareValue, ClrType);

                    if (Comparer == Comparer.GreaterThan)
                    {
                        if (value != null && value is IComparable && tovale is IComparable)
                        {
                            return(((IComparable)value).CompareTo((IComparable)tovale) > 0);
                        }
                    }

                    else if (Comparer == Comparer.GreaterThanOrEqual)
                    {
                        if (value != null && value is IComparable && tovale is IComparable)
                        {
                            return(((IComparable)value).CompareTo((IComparable)tovale) >= 0);
                        }
                    }
                    else if (Comparer == Comparer.LessThan)
                    {
                        if (value != null && value is IComparable && tovale is IComparable)
                        {
                            return(((IComparable)value).CompareTo((IComparable)tovale) < 0);
                        }
                    }
                    else if (Comparer == Comparer.LessThanOrEqual)
                    {
                        if (value != null && value is IComparable && tovale is IComparable)
                        {
                            return(((IComparable)value).CompareTo((IComparable)tovale) <= 0);
                        }
                    }
                }
                catch (Exception)
                {
                    return(false);
                }
            }
            return(true);
        }