Ejemplo n.º 1
0
        public void TestEqualsEachInRandomOrder()
        {
            var enum1 = new[] { 1, 2, 3, 4, };

            Assert.AreEqual(true, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3, 4, }));
            Assert.AreEqual(true, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2, 4 }));

            Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3 }));
            Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 2, 3, 4, 5, }));
            Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2 }));
            Assert.AreEqual(false, IEnumerableUtil.EqualsEachInRandomOrder(enum1, new[] { 1, 3, 2, 4, 5, }));
        }
Ejemplo n.º 2
0
        /// <summary>
        /// enumerableからfuncでIComparableを取得し,それが最小の要素を返す.
        /// </summary>
        public static T FindMin <T, S>(this IEnumerable <T> enumerable, Func <T, S> func) where S : IComparable
        {
            Contract.Requires(!IEnumerableUtil.IsNullOrEmpty(enumerable));

            var ret   = enumerable.First();
            var value = func(ret);

            foreach (var elem in enumerable)
            {
                S v = func(elem);
                if (v.CompareTo(value) < 0)
                {
                    value = v;
                    ret   = elem;
                }
            }

            return(ret);
        }