| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- using YZWater.Core.Services;
- namespace YZWater.Core.Tests.Services;
- /// <summary>
- /// 路径锚定测试:数据/配置/日志必须落在程序目录下,而不是当前工作目录
- /// (当前工作目录随启动方式变化,会让程序读不到自己的数据)
- /// </summary>
- public class AppPathsTests
- {
- [Theory]
- [InlineData(nameof(AppPaths.Database))]
- [InlineData(nameof(AppPaths.Config))]
- [InlineData(nameof(AppPaths.ConfigLastGood))]
- [InlineData(nameof(AppPaths.Projects))]
- [InlineData(nameof(AppPaths.Backups))]
- [InlineData(nameof(AppPaths.Logs))]
- public void Path_IsAnchoredToExecutableDirectory(string name)
- {
- var value = name switch
- {
- nameof(AppPaths.Database) => AppPaths.Database,
- nameof(AppPaths.Config) => AppPaths.Config,
- nameof(AppPaths.ConfigLastGood) => AppPaths.ConfigLastGood,
- nameof(AppPaths.Projects) => AppPaths.Projects,
- nameof(AppPaths.Backups) => AppPaths.Backups,
- nameof(AppPaths.Logs) => AppPaths.Logs,
- _ => throw new ArgumentOutOfRangeException(nameof(name))
- };
- Assert.True(Path.IsPathRooted(value), $"{name} 必须是绝对路径");
- Assert.StartsWith(Path.GetFullPath(AppContext.BaseDirectory), Path.GetFullPath(value));
- }
- [Fact]
- public void Database_And_Config_UseExpectedFileNames()
- {
- Assert.Equal("yzwater.db", Path.GetFileName(AppPaths.Database));
- Assert.Equal("yzwater-config.json", Path.GetFileName(AppPaths.Config));
- // 备份副本必须与主配置同名加后缀:FileSystemWatcher 只监听主配置文件名
- Assert.Equal("yzwater-config.json.lastgood", Path.GetFileName(AppPaths.ConfigLastGood));
- }
- }
|