示例#1
0
        public void Test_WithNeutralResourcesLanguageAttributeSpecifiesSpecificCulture_DoesNotOverrideExistingSpecificCulture()
        {
            var service = new MultiLingualNameBasedExtensibleEnumGlobalizationService();

            var extensibleEnumInfo = MockRepository.GenerateStub <IExtensibleEnumInfo>();

            extensibleEnumInfo.Stub(_ => _.DefiningMethod).Return(GetMethod("ValueWithEnAndEnUSAndEnGB", TestAssemblies.EnUS.Value));
            var extensibleEnumStub = MockRepository.GenerateStub <IExtensibleEnum>();

            extensibleEnumStub.Stub(_ => _.GetValueInfo()).Return(extensibleEnumInfo);

            using (new CultureScope("en-GB", "en-GB"))
            {
                string multiLingualName;

                var result = service.TryGetExtensibleEnumValueDisplayName(extensibleEnumStub, out multiLingualName);

                Assert.That(result, Is.True);
                Assert.That(multiLingualName, Is.EqualTo("The Name en-GB"));
            }
        }
示例#2
0
        public void TryGetEnumerationValueDisplayName_WithMultiLingualNameAttributesForDifferentCulturesAndCurrentUICultureOnlyMatchesInvariantCulture_ReturnsForTheInvariantCulture()
        {
            var service = new MultiLingualNameBasedExtensibleEnumGlobalizationService();

            var extensibleEnumInfo = MockRepository.GenerateStub <IExtensibleEnumInfo>();

            extensibleEnumInfo.Stub(_ => _.DefiningMethod).Return(GetMethod("ValueWithMultiLingualNameAttributes"));
            var extensibleEnumStub = MockRepository.GenerateStub <IExtensibleEnum>();

            extensibleEnumStub.Stub(_ => _.GetValueInfo()).Return(extensibleEnumInfo);

            using (new CultureScope("it-IT", "de-AT"))
            {
                string multiLingualName;

                var result = service.TryGetExtensibleEnumValueDisplayName(extensibleEnumStub, out multiLingualName);

                Assert.That(result, Is.True);
                Assert.That(multiLingualName, Is.EqualTo("The Name invariant"));
            }
        }
示例#3
0
        public void Test_WithoutNeutralResourcesLanguageAttribute_UsesInvariantCultureForNeutralCulture()
        {
            var service = new MultiLingualNameBasedExtensibleEnumGlobalizationService();

            var extensibleEnumInfo = MockRepository.GenerateStub <IExtensibleEnumInfo>();

            extensibleEnumInfo.Stub(_ => _.DefiningMethod).Return(GetMethod("ValueWithInvariantAndEn", TestAssemblies.Without.Value));
            var extensibleEnumStub = MockRepository.GenerateStub <IExtensibleEnum>();

            extensibleEnumStub.Stub(_ => _.GetValueInfo()).Return(extensibleEnumInfo);

            using (new CultureScope("", ""))
            {
                string multiLingualName;

                var result = service.TryGetExtensibleEnumValueDisplayName(extensibleEnumStub, out multiLingualName);

                Assert.That(result, Is.True);
                Assert.That(multiLingualName, Is.EqualTo("The Name invariant"));
            }
        }
示例#4
0
        public void Test_WithMultiLingualNameAttributesNotMatchingTheNeutralResourcesLanguageAttribute_ThrowsInvalidOperationException()
        {
            var service = new MultiLingualNameBasedExtensibleEnumGlobalizationService();

            var extensibleEnumInfo = MockRepository.GenerateStub <IExtensibleEnumInfo>();

            extensibleEnumInfo.Stub(_ => _.DefiningMethod).Return(GetMethod("ValueWithoutInvariantCulture"));
            var extensibleEnumStub = MockRepository.GenerateStub <IExtensibleEnum>();

            extensibleEnumStub.Stub(_ => _.GetValueInfo()).Return(extensibleEnumInfo);

            using (new CultureScope("it-IT", "en-GB"))
            {
                string multiLingualName;

                Assert.That(
                    () => service.TryGetExtensibleEnumValueDisplayName(extensibleEnumStub, out multiLingualName),
                    Throws.TypeOf <InvalidOperationException>().With.Message.StartsWith(
                        "The extensible enum value 'ValueWithoutInvariantCulture' declared on type "
                        + "'Remotion.Globalization.ExtensibleEnums.UnitTests.Implementation.MultiLingualNameBasedExtensibleEnumGlobalizationServiceTest+TestEnumExtensions' "
                        + "has no MultiLingualNameAttribute for the assembly's neutral resource language ('') applied."));
            }
        }
示例#5
0
        public void TryGetEnumerationValueDisplayName_WithMultipleMultiLingualNameAttributesForSameCulture_ThrowsInvalidOperationException()
        {
            var service = new MultiLingualNameBasedExtensibleEnumGlobalizationService();

            var extensibleEnumInfo = MockRepository.GenerateStub <IExtensibleEnumInfo>();

            extensibleEnumInfo.Stub(_ => _.DefiningMethod).Return(GetMethod("ValueWithDuplicateMultiLingualNameAttributes"));
            var extensibleEnumStub = MockRepository.GenerateStub <IExtensibleEnum>();

            extensibleEnumStub.Stub(_ => _.GetValueInfo()).Return(extensibleEnumInfo);

            using (new CultureScope("it-IT", "en-US"))
            {
                string multiLingualName;

                Assert.That(
                    () => service.TryGetExtensibleEnumValueDisplayName(extensibleEnumStub, out multiLingualName),
                    Throws.TypeOf <InvalidOperationException>().With.Message.EqualTo(
                        "The extensible enum value 'ValueWithDuplicateMultiLingualNameAttributes' declared on type "
                        + "'Remotion.Globalization.ExtensibleEnums.UnitTests.Implementation.MultiLingualNameBasedExtensibleEnumGlobalizationServiceTest+TestEnumExtensions' "
                        + "has more than one MultiLingualNameAttribute for the culture 'fr-FR' applied. "
                        + "The used cultures must be unique within the set of MultiLingualNameAttributes."));
            }
        }