Esempio n. 1
0
        private static void IsDefined <E, T>()
            where E : class, IComparable, IFormattable, IConvertible
            where T : struct, E
        {
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(sbyte)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(byte)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(ushort)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(short)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(uint)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(int)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(long)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(ulong)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(float)));
            Assert.IsFalse(EnumUtilBase <E> .IsDefined <T>(default(double)));

            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((sbyte)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((byte)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((ushort)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((short)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((uint)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((int)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((long)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((ulong)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((float)2));
            Assert.IsTrue(EnumUtilBase <E> .IsDefined <T>((double)2));
        }
Esempio n. 2
0
        private void TestEquivalentValues <E, T>()
            where E : class, IComparable, IFormattable, IConvertible
            where T : struct, E
        {
            var values  = (T[])typeof(T).GetEnumValues();
            var values2 = EnumUtilBase <E> .GetValues <T>();

            Assert.IsTrue(values.Length == values2.Length);

            for (int i = 0; i < values.Length; i++)
            {
                Assert.AreEqual(values[i], values2[i]);
            }
        }
Esempio n. 3
0
        private static void RunTests <E, T>()
            where E : class, IComparable, IFormattable, IConvertible
            where T : struct, E
        {
            string[] names = EnumUtilBase <E> .GetNames <T>();

            T[] values = EnumUtilBase <E> .GetValues <T>();

            IReadOnlyDictionary <T, string> nameValues =
                EnumUtilBase <E> .GetValueName <T>();

            Assert.IsNotNull(nameValues);

            foreach (var nm in nameValues)
            {
                Assert.IsNotNull(nm.Value);
            }

            Assert.IsTrue(nameValues.Count == values.Length);
            Assert.IsTrue(Enum.GetValues(typeof(T)).Length == values.Length);
            Assert.IsTrue(names.Length == values.Length);

            T aggregate = values.Aggregate((x, y) => EnumUtilBase <E> .BitwiseOr <T>(x, y));

            Assert.IsTrue(Convert.ToInt32(aggregate) == 15);
            T aggregate2 = values.Aggregate((x, y) => EnumUtilBase <E> .BitwiseAnd <T>(x, y));

            Assert.IsTrue(Convert.ToInt32(aggregate2) == 0);

            for (int i = 0; i < values.Length; i++)
            {
                T      value = values[i];
                string name  = names[i];

                byte byteVal = EnumUtilBase <E> .ToByte(value);

                Assert.AreEqual(EnumUtilBase <E> .FromByte <T>(byteVal), value);

                sbyte sbyteVal = EnumUtilBase <E> .ToSByte(value);

                Assert.AreEqual(EnumUtilBase <E> .FromSByte <T>(sbyteVal), value);

                short int16Val = EnumUtilBase <E> .ToInt16(value);

                Assert.AreEqual(EnumUtilBase <E> .FromInt16 <T>(int16Val), value);

                ushort uint16Val = EnumUtilBase <E> .ToUInt16(value);

                Assert.AreEqual(EnumUtilBase <E> .FromUInt16 <T>(uint16Val), value);

                int intVal = EnumUtilBase <E> .ToInt32(value);

                Assert.AreEqual(EnumUtilBase <E> .FromInt32 <T>(intVal), value);

                uint uintVal = EnumUtilBase <E> .ToUInt32(value);

                Assert.AreEqual(EnumUtilBase <E> .FromUInt32 <T>(uintVal), value);

                long longVal = EnumUtilBase <E> .ToInt64(value);

                Assert.AreEqual(EnumUtilBase <E> .FromInt64 <T>(longVal), value);

                ulong val = EnumUtilBase <E> .ToUInt64(value);

                Assert.AreEqual(EnumUtilBase <E> .FromUInt64 <T>(val), value);

                float floatVal = EnumUtilBase <E> .ToSingle(value);

                Assert.AreEqual(EnumUtilBase <E> .FromSingle <T>(floatVal), value);

                double doubleVal = EnumUtilBase <E> .ToDouble(value);

                Assert.AreEqual(EnumUtilBase <E> .FromDouble <T>(doubleVal), value);

                Assert.IsTrue(EnumUtilBase <E> .BitwiseOr(value, value).Equals(value));
                Assert.IsTrue(EnumUtilBase <E> .BitwiseAnd(value, value).Equals(value));
                Assert.IsTrue(EnumUtilBase <E> .BitwiseExclusiveOr(value, value).Equals(default(T)));

                Assert.IsTrue(EnumUtilBase <E> .HasFlag(aggregate, value));
                Assert.IsFalse(EnumUtilBase <E> .HasFlag(value, aggregate));
                Assert.IsTrue(EnumUtilBase <E> .HasFlag(aggregate, default(T)));

                Assert.IsFalse(EnumUtilBase <E> .HasFlagsAttribute <T>());
                Assert.IsFalse(EnumUtilBase <E> .HasAttribute <FlagsAttribute, T>());

                Assert.IsTrue(EnumUtilBase <E> .IsDefined(value));
                Assert.IsFalse(EnumUtilBase <E> .IsDefined(default(T)));

                Assert.AreEqual(name, EnumUtilBase <E> .GetName(value));
                Assert.AreEqual(value, EnumUtilBase <E> .Parse <T>(name));

                Type t = EnumUtilBase <E> .GetUnderlyingType <T>();

                Assert.AreEqual(t, Enum.GetUnderlyingType(typeof(T)));

                Assert.IsTrue(EnumUtilBase <E> .TryParse(name, out value));
                Assert.IsTrue(EnumUtilBase <E> .TryParse(name, false, out value));
                Assert.IsFalse(EnumUtilBase <E> .TryParse(name.ToLower(), false, out value));
                Assert.IsFalse(EnumUtilBase <E> .TryParse(name.ToUpper(), false, out value));

                Assert.IsTrue(EnumUtilBase <E> .TryParse(name.ToLower(), true, out value));
                Assert.IsTrue(EnumUtilBase <E> .TryParse(name.ToUpper(), true, out value));
                Assert.IsTrue(EnumUtilBase <E> .TryParse(name, true, out value));
            }
        }