Files
LanMountainDesktop/tests/LanMountainDesktop.Tests/LocalizationServiceTests.cs
2026-08-11 19:41:54 +08:00

84 lines
2.3 KiB
C#

using LanMountainDesktop.Services;
using Xunit;
namespace LanMountainDesktop.Tests;
public sealed class LocalizationServiceTests
{
private readonly LocalizationService _service = new();
[Theory]
[InlineData(null, "zh-CN")]
[InlineData("", "zh-CN")]
[InlineData(" ", "zh-CN")]
[InlineData("zh-CN", "zh-CN")]
[InlineData("zh-cn", "zh-CN")]
[InlineData("en-US", "en-US")]
[InlineData("en-us", "en-US")]
[InlineData("en", "en-US")]
[InlineData("EN", "en-US")]
[InlineData("ja-JP", "ja-JP")]
[InlineData("ja-jp", "ja-JP")]
[InlineData("ja", "ja-JP")]
[InlineData("JA", "ja-JP")]
[InlineData("ko-KR", "ko-KR")]
[InlineData("ko-kr", "ko-KR")]
[InlineData("ko", "ko-KR")]
[InlineData("KO", "ko-KR")]
[InlineData("fr-FR", "zh-CN")]
[InlineData("de", "zh-CN")]
[InlineData("unknown", "zh-CN")]
public void NormalizeLanguageCode_MapsToSupportedLocales(string? input, string expected)
{
Assert.Equal(expected, _service.NormalizeLanguageCode(input));
}
[Fact]
public void GetString_ReturnsFallbackWhenNoLanguageFilesExist()
{
var result = _service.GetString("en-US", "nonexistent.key", "Default Value");
Assert.Equal("Default Value", result);
}
[Fact]
public void GetString_ReturnsFallbackForEmptyKey()
{
var result = _service.GetString("en-US", "", "Fallback");
Assert.Equal("Fallback", result);
}
[Fact]
public void GetString_FallsBackForUnknownLanguage()
{
var result = _service.GetString("fr-FR", "some.key", "Fallback");
Assert.Equal("Fallback", result);
}
[Fact]
public void ClearCache_WithNull_ClearsAllEntries()
{
_service.ClearCache(null);
var result = _service.GetString("en-US", "test.key", "After");
Assert.Equal("After", result);
}
[Fact]
public void ClearCache_WithSpecificCode_ClearsOnlyThatLanguage()
{
_service.ClearCache("en-US");
var result = _service.GetString("en-US", "test.key", "Cleared");
Assert.Equal("Cleared", result);
}
[Fact]
public void ClearCache_WithWhitespace_ClearsAllEntries()
{
_service.ClearCache(" ");
var result = _service.GetString("ja-JP", "test.key", "AllCleared");
Assert.Equal("AllCleared", result);
}
}