private static void AssertSameSameSame(MenuItem item1, MenuItem item2, MenuItem item3) {
            var comparer = new MenuItemComparer();

            Assert.That(comparer.Equals(item1, item2), Is.True);
            Assert.That(comparer.Equals(item1, item3), Is.True);
            Assert.That(comparer.Equals(item2, item3), Is.True);

            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item2)));
            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item3)));
            Assert.That(comparer.GetHashCode(item2), Is.EqualTo(comparer.GetHashCode(item3)));
        }
        private static void AssertSameSameDifferent(MenuItem item1, MenuItem item2, MenuItem item3) {
            var comparer = new MenuItemComparer();

            Assert.That(comparer.Equals(item1, item2), Is.True);
            Assert.That(comparer.Equals(item1, item3), Is.False);
            Assert.That(comparer.Equals(item2, item3), Is.False);

            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item2)));
            // - hash inequality isn't really guaranteed, now that you mention it
            //Assert.That(comparer.GetHashCode(item1), Is.Not.EqualTo(comparer.GetHashCode(item3)));
            //Assert.That(comparer.GetHashCode(item2), Is.Not.EqualTo(comparer.GetHashCode(item3)));
        }
        private static void AssertSameSameSame(MenuItem item1, MenuItem item2, MenuItem item3)
        {
            var comparer = new MenuItemComparer();

            Assert.That(comparer.Equals(item1, item2), Is.True);
            Assert.That(comparer.Equals(item1, item3), Is.True);
            Assert.That(comparer.Equals(item2, item3), Is.True);

            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item2)));
            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item3)));
            Assert.That(comparer.GetHashCode(item2), Is.EqualTo(comparer.GetHashCode(item3)));
        }
Exemple #4
0
        private static IEnumerable <MenuItem> Merge(IEnumerable <IEnumerable <MenuItem> > sources)
        {
            var comparer = new MenuItemComparer();
            var orderer  = new FlatPositionComparer();

            return(sources.SelectMany(x => x).ToArray()
                   //相同的菜单
                   .GroupBy(key => key, (key, items) => Join(items), comparer)
                   //相同的位置
                   .GroupBy(item => item.Position)
                   .OrderBy(positionGroup => positionGroup.Key, orderer)
                   .SelectMany(positionGroup => positionGroup.OrderBy(item => item.Text == null ? string.Empty : item.Text.TextHint)));
        }
        private static void AssertSameSameDifferent(MenuItem item1, MenuItem item2, MenuItem item3)
        {
            var comparer = new MenuItemComparer();

            Assert.That(comparer.Equals(item1, item2), Is.True);
            Assert.That(comparer.Equals(item1, item3), Is.False);
            Assert.That(comparer.Equals(item2, item3), Is.False);

            Assert.That(comparer.GetHashCode(item1), Is.EqualTo(comparer.GetHashCode(item2)));
            // - hash inequality isn't really guaranteed, now that you mention it
            //Assert.That(comparer.GetHashCode(item1), Is.Not.EqualTo(comparer.GetHashCode(item3)));
            //Assert.That(comparer.GetHashCode(item2), Is.Not.EqualTo(comparer.GetHashCode(item3)));
        }
        private static IEnumerable <MenuItem> Merge(IEnumerable <IEnumerable <MenuItem> > sources)
        {
            var comparer = new MenuItemComparer();
            var orderer  = new FlatPositionComparer();

            return(sources.SelectMany(x => x).ToArray()
                   // group same menus
                   .GroupBy(key => key, (key, items) => Join(items), comparer)
                   // group same position
                   .GroupBy(item => item.Position)
                   // order position groups by position
                   .OrderBy(positionGroup => positionGroup.Key, orderer)
                   // ordered by item text in the postion group
                   .SelectMany(positionGroup => positionGroup.OrderBy(item => item.Text == null ? "" : item.Text.TextHint)));
        }
        private static IEnumerable<MenuItem> Merge(IEnumerable<IEnumerable<MenuItem>> sources)
        {
            var comparer = new MenuItemComparer();
            var orderer = new PositionComparer();

            return sources.SelectMany(x => x).ToArray()
                .GroupBy(key => key, (key, items) => Join(items), comparer)
                .OrderBy(item => item.Position, orderer);
        }
Exemple #8
0
        private static IEnumerable<MenuItem> Merge(IEnumerable<IEnumerable<MenuItem>> sources) {
            var comparer = new MenuItemComparer();
            var orderer = new FlatPositionComparer();

            return sources.SelectMany(x => x).ToArray()
                // group same menus
                .GroupBy(key => key, (key, items) => Join(items), comparer)
                // group same position
                .GroupBy(item => item.Position)
                // order position groups by position
                .OrderBy(positionGroup => positionGroup.Key, orderer)
                // ordered by item text in the postion group
                .SelectMany(positionGroup => positionGroup.OrderBy(item => item.Text == null ? "" : item.Text.TextHint));
        }
        private static IEnumerable<MenuItem> Merge(IEnumerable<IEnumerable<MenuItem>> sources)
        {
            var comparer = new MenuItemComparer();
            var orderer = new FlatPositionComparer();

            return sources.SelectMany(x => x).ToArray()
                //相同的菜单
                .GroupBy(key => key, (key, items) => Join(items), comparer)
                //相同的位置
                .GroupBy(item => item.Position)
                .OrderBy(positionGroup => positionGroup.Key, orderer)
                .SelectMany(positionGroup => positionGroup.OrderBy(item => item.Text == null ? string.Empty : item.Text.TextHint));
        }