public void SerializeEnum_ValidEnums_HelperMethodFasterThanToString()
        {
            var cache = new ConcurrentDictionary <FakeTestingEnum, string>();

            const int testIterations = 1000000;

            var swSerEnumMember = new Stopwatch();

            swSerEnumMember.Start();

            for (int i = 0; i < testIterations; i++)
            {
                string value = PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum(FakeTestingEnum.YourValue, cache);
            }

            swSerEnumMember.Stop();

            var swSerEnumToString = new Stopwatch();

            swSerEnumToString.Start();

            for (int i = 0; i < testIterations; i++)
            {
                string value = FakeTestingEnum.YourValue.ToString();
            }

            swSerEnumToString.Stop();

            _output.WriteLine($"Helper: {swSerEnumMember.Elapsed}");
            _output.WriteLine($"ToString: {swSerEnumToString.Elapsed}");
            _output.WriteLine($"Ratio: {swSerEnumToString.Elapsed.TotalMilliseconds / swSerEnumMember.Elapsed.TotalMilliseconds}");

            Assert.True(swSerEnumMember.Elapsed <= swSerEnumToString.Elapsed);
        }
        public void GetDescriptionFromEnum_InValidEnumValue_ReturnsIntValueAsString()
        {
            string enumString =
                PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum((FakeTestingEnum)int.MaxValue);

            Assert.Equal(int.MaxValue.ToString(), enumString);
        }
        public void SerializeEnum_ValidEnums_HelperMethodFasterThanToString()
        {
            var cache = new ConcurrentDictionary <FakeTestingEnum, string>();

            const int testIterations = 100000;

            var swSerEnumMember = new Stopwatch();

            swSerEnumMember.Start();

            for (int i = 0; i < testIterations; i++)
            {
                string value = PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum(FakeTestingEnum.YourValue, cache);
            }

            swSerEnumMember.Stop();

            var swSerEnumToString = new Stopwatch();

            swSerEnumToString.Start();

            for (int i = 0; i < testIterations; i++)
            {
                string value = FakeTestingEnum.YourValue.ToString();
            }

            swSerEnumToString.Stop();

            Assert.True(swSerEnumMember.ElapsedTicks <= swSerEnumToString.ElapsedTicks);
        }
        public void SerializeEnum_WithCacheAndValidDescription_CorrectEnumAddedToCache()
        {
            var    cache          = new ConcurrentDictionary <FakeTestingEnum, string>();
            string serializedEnum = PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum(
                FakeTestingEnum.YourValue, cache);

            Assert.Equal(YourValueEnumMemberValue, serializedEnum);
            Assert.Equal(1, cache.Count);
            Assert.True(cache.ContainsKey(FakeTestingEnum.YourValue));
        }
        public void GetDescriptionFromEnum_ValidEnumTypeWithoutAttr_ReturnsEnumString()
        {
            string enumString = PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum(FakeTestingEnum.MyValue);

            Assert.Equal("MyValue", enumString);
        }
        public void GetDescriptionFromEnum_ValidEnumTypeWithAttr_ReturnsAttrString()
        {
            string enumString = PrettyEnumHelpers <FakeTestingEnum> .SerializeEnum(FakeTestingEnum.YourValue);

            Assert.Equal(YourValueEnumMemberValue, enumString);
        }
 public void GetDescriptionFromEnum_NonEnumType_ThrowsException()
 {
     Assert.Throws <InvalidOperationException>(
         () =>
         PrettyEnumHelpers <DateTime> .SerializeEnum(new DateTime()));
 }