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")); } }
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")); } }
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")); } }
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.")); } }
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.")); } }