Ejemplo n.º 1
0
        public void As()
        {
            Assert.ThrowsExact <ArgumentNullException>(() => EnumExtensions.As <int>(null));
            Assert.ThrowsExact <InvalidOperationException>(() => EnumExtensions.As <double>(EnumVanilla.None));
            Assert.ThrowsExact <InvalidOperationException>(() => EnumExtensions.As <Guid>(EnumVanilla.None));
            Assert.ThrowsExact <InvalidOperationException>(() => EnumExtensions.As <DateTime>(EnumVanilla.None));

            int value = 0;

            value = 0;
            Assert.DoesNotThrow(() => value = EnumVanilla.One.As <sbyte>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = EnumVanilla.One.As <short>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = EnumVanilla.One.As <int>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = (int)EnumVanilla.One.As <long>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = EnumVanilla.One.As <byte>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = EnumVanilla.One.As <ushort>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = (int)EnumVanilla.One.As <uint>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.DoesNotThrow(() => value = (int)EnumVanilla.One.As <ulong>());
            Assert.Equal(value, 1);

            value = 0;
            Assert.ThrowsExact <OverflowException>(() => value = EnumVanilla.Huge.As <byte>());
            Assert.ThrowsExact <OverflowException>(() => value = EnumVanilla.Huge.As <sbyte>());
            Assert.ThrowsExact <OverflowException>(() => value = EnumVanilla.Huge.As <ushort>());
            Assert.ThrowsExact <OverflowException>(() => value = EnumVanilla.Huge.As <short>());
            Assert.ThrowsExact <OverflowException>(() => value = ((EnumVanilla)(-1)).As <ushort>());

            value = 0;
            Assert.DoesNotThrow(() => value = default(EnumNoValues).As <byte>());
            Assert.Equal(value, 0);
        }