using System.Globalization; using System.IO; using Util.Helpers; using Util.Localization.Json; using Util.Localization.Resources.ResourceTypes; using Xunit; using Xunit.Abstractions; namespace Util.Localization.Tests; /// /// 路径解析器测试 /// public class PathResolverTest { /// /// 路径解析器 /// private readonly PathResolver _resolver; /// /// 输出消息 /// private readonly ITestOutputHelper _output; /// /// 初始化路径解析器 /// public PathResolverTest( ITestOutputHelper output ) { _output = output; _resolver = new PathResolver(); } /// /// 测试获取根命名空间 - 未设置RootNamespace特性,返回程序集名称 /// [Fact] public void TestGetRootNamespace_AssemblyName() { var type = typeof(Resource101); Assert.Equal( "Util.Localization.Resources", _resolver.GetRootNamespace( type.Assembly )); } /// /// 测试获取根命名空间 - 设置RootNamespace特性,返回特性值 /// [Fact] public void TestGetRootNamespace_RootNamespace() { var type = typeof( PathResolverTest ); Assert.Equal( "Util.Localization", _resolver.GetRootNamespace( type.Assembly ) ); } /// /// 测试获取资源根目录路径 - 未设置ResourceLocation特性,返回传入的资源根路径 /// [Fact] public void TestGetResourcesRootPath_ResourcesPath() { var type = typeof( PathResolverTest ); Assert.Equal( "Resources", _resolver.GetResourcesRootPath( type.Assembly, "Resources" ) ); } /// /// 测试获取资源根目录路径 - 设置ResourceLocation特性,返回特性值 /// [Fact] public void TestGetResourcesRootPath_ResourceLocation() { var type = typeof( Resource101 ); Assert.Equal( "Resources2", _resolver.GetResourcesRootPath( type.Assembly, "Resources" ) ); } /// /// 测试获取资源基名称 - 未设置RootNamespace特性 /// [Fact] public void TestGetResourcesBaseName_1() { var type = typeof( Resource101 ); Assert.Equal( "ResourceTypes.Resource101", _resolver.GetResourcesBaseName( type.Assembly, type.FullName ) ); } /// /// 测试获取资源基名称 - 设置RootNamespace特性 /// [Fact] public void TestGetResourcesBaseName_2() { var type = typeof( PathResolverTest ); Assert.Equal( "Tests.PathResolverTest", _resolver.GetResourcesBaseName( type.Assembly, type.FullName ) ); } /// /// 测试获取Json资源文件绝对路径 /// [Fact] public void TestGetJsonResourcePath() { var result = Path.Combine( Common.ApplicationBaseDirectory, "Resources", "Tests.PathResolverTest.zh-CN.json" ); var path = _resolver.GetJsonResourcePath( "Resources", "Tests.PathResolverTest", new CultureInfo( "zh-CN" ) ); _output.WriteLine( path ); Assert.Equal( result,path ); } /// /// 测试获取Json资源文件绝对路径 - 内部类带+ /// [Fact] public void TestGetJsonResourcePath_InnerClass() { var result = Path.Combine( Common.ApplicationBaseDirectory, "Resources", "ResourceTypes.Resource4.Resource41.zh-CN.json" ); var path = _resolver.GetJsonResourcePath( "Resources", "ResourceTypes.Resource4+Resource41", new CultureInfo( "zh-CN" ) ); _output.WriteLine( path ); Assert.Equal( result, path ); } /// /// 测试获取Json资源文件绝对路径 - 基名称为空 /// [Fact] public void TestGetJsonResourcePath_NullBaseName() { var result = Path.Combine( Common.ApplicationBaseDirectory, "Resources", "zh-CN.json" ); var path = _resolver.GetJsonResourcePath( "Resources", null, new CultureInfo( "zh-CN" ) ); _output.WriteLine( path ); Assert.Equal( result, path ); } }