public void ShouldConvert()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();
            const TestEnum InutValue = TestEnum.Lorem;

            // Act
            var convertedOutput = converter.Convert(InutValue, null, null, null);

            // Assert
            convertedOutput.ToString().Should().Be(AppResources.LoremText);
        }
        public void ShouldConvertBackIfInputValueIsEnum()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();

            const TestEnum InutValue = TestEnum.Lorem;

            // Act
            var convertedOutput = (TestEnum)converter.ConvertBack(InutValue, typeof(TestEnum), null, null);

            // Assert
            convertedOutput.Should().Be(TestEnum.Lorem);
        }
        public void ShouldConvertGenericEnumerable()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();

            var inutValue = Enum.GetValues(typeof(TestEnum)).OfType<TestEnum>();

            // Act
            var convertedOutput = (IEnumerable<EnumWrapper<TestEnum>>)converter.Convert(inutValue, null, null, null);

            // Assert
            convertedOutput.Should().HaveCount(inutValue.Count());
        }
        public void ShouldConvertIfNoAnnotationAvailable()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();
            const TestEnum InutValue = TestEnum.Dolor;
            string expectedOutput = InutValue.ToString();

            // Act
            var convertedOutput = converter.Convert(InutValue, null, null, null);

            // Assert
            convertedOutput.ToString().Should().Be(expectedOutput);
        }
        public void ShouldThrowInvalidOperationExceptionIfAppResourceCannotBeFound()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();
            const TestEnum InutValue = TestEnum.Ipsum;

            // Act
            var convertedOutput = converter.Convert(InutValue, null, null, null);
            Action action = () => convertedOutput.ToString();

            // Assert
            action.ShouldThrow<InvalidOperationException>();
        }
        public void ShouldThrowArgumentNullExceptionOnConvertBackIfTargetTypeIsNull()
        {
            // Arrange
            IValueConverter converter = new EnumWrapperConverter();

            var inutValue = EnumWrapper.CreateWrapper(TestEnum.Lorem);

            // Act
            Action action = () => { converter.ConvertBack(inutValue, null, null, null); };

            // Assert
            action.ShouldThrow<ArgumentNullException>();
        }