Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Globalization;
using System.Linq;
using System.Threading;
using Wox.Plugin;
using Community.PowerToys.Run.Plugin.QuickNotes.Properties;

namespace Community.PowerToys.Run.Plugin.QuickNotes.UnitTests
{
Expand Down Expand Up @@ -31,4 +34,139 @@ public void LoadContextMenus_should_return_results()
Assert.IsNotNull(results.First());
}
}

[TestClass]
public class LocalizationTests
{
private CultureInfo originalCulture;
private CultureInfo originalUICulture;

[TestInitialize]
public void TestInitialize()
{
originalCulture = Thread.CurrentThread.CurrentCulture;
originalUICulture = Thread.CurrentThread.CurrentUICulture;
}

[TestCleanup]
public void TestCleanup()
{
Thread.CurrentThread.CurrentCulture = originalCulture;
Thread.CurrentThread.CurrentUICulture = originalUICulture;
Resources.Culture = null;
}

[TestMethod]
public void Resources_English_PluginName_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("en-US");
Assert.AreEqual("QuickNotes", Resources.PluginName);
}

[TestMethod]
public void Resources_English_PluginDescription_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("en-US");
Assert.AreEqual("Save, view, manage, search, tag, and pin quick notes", Resources.PluginDescription);
}

[TestMethod]
public void Resources_Ukrainian_PluginName_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Швидкі нотатки", Resources.PluginName);
}

[TestMethod]
public void Resources_Ukrainian_PluginDescription_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Зберігайте, переглядайте, керуйте, шукайте, тегуйте та закріплюйте швидкі нотатки", Resources.PluginDescription);
}

[TestMethod]
public void Resources_Ukrainian_CommandHelp_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Показати довідку з доступними командами ℹ️", Resources.CommandHelp);
}

[TestMethod]
public void Resources_Ukrainian_NoteSaved_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Нотатку збережено", Resources.NoteSaved);
}

[TestMethod]
public void Resources_Ukrainian_NoteDeleted_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Нотатку видалено", Resources.NoteDeleted);
}

[TestMethod]
public void Resources_Ukrainian_NotePinned_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Нотатку закріплено", Resources.NotePinned);
}

[TestMethod]
public void Resources_Ukrainian_NoteUnpinned_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Нотатку відкріплено", Resources.NoteUnpinned);
}

[TestMethod]
public void Resources_Ukrainian_Error_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Помилка", Resources.Error);
}

[TestMethod]
public void Resources_Ukrainian_Cancel_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("uk");
Assert.AreEqual("Скасувати", Resources.Cancel);
}

[TestMethod]
public void Resources_ChineseSimplified_PluginName_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("zh-CN");
Assert.AreEqual("快速笔记", Resources.PluginName);
}

[TestMethod]
public void Resources_ChineseSimplified_PluginDescription_ShouldBeCorrect()
{
Resources.Culture = new CultureInfo("zh-CN");
Assert.AreEqual("保存、查看、管理、搜索、标签和置顶快速笔记", Resources.PluginDescription);
}

[TestMethod]
public void Resources_AllLocales_ShouldHaveNonEmptyPluginName()
{
var cultures = new[] { "en-US", "uk", "zh-CN" };
foreach (var cultureName in cultures)
{
Resources.Culture = new CultureInfo(cultureName);
Assert.IsFalse(string.IsNullOrEmpty(Resources.PluginName), $"PluginName should not be empty for culture {cultureName}");
}
}

[TestMethod]
public void Resources_AllLocales_ShouldHaveNonEmptyPluginDescription()
{
var cultures = new[] { "en-US", "uk", "zh-CN" };
foreach (var cultureName in cultures)
{
Resources.Culture = new CultureInfo(cultureName);
Assert.IsFalse(string.IsNullOrEmpty(Resources.PluginDescription), $"PluginDescription should not be empty for culture {cultureName}");
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
<!-- Other important properties -->
<RootNamespace>Community.PowerToys.Run.Plugin.QuickNotes</RootNamespace>
<AssemblyName>Community.PowerToys.Run.Plugin.QuickNotes</AssemblyName>
<Version>1.0.11</Version>
<Version>1.0.12</Version>
<AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
<AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
<GenerateAssemblyInfo>true</GenerateAssemblyInfo>
Expand All @@ -32,6 +32,30 @@
<PackageReference Include="System.Text.Json" Version="9.0.0" />
</ItemGroup>

<!-- Make internals visible to test project -->
<ItemGroup>
<InternalsVisibleTo Include="Community.PowerToys.Run.Plugin.QuickNotes.UnitTests" />
</ItemGroup>

<!-- Resource files for localization -->
<ItemGroup>
<EmbeddedResource Update="Properties\Resources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
</EmbeddedResource>
<EmbeddedResource Update="Properties\Resources.zh-CN.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Update="Properties\Resources.uk.resx">
<DependentUpon>Resources.resx</DependentUpon>
</EmbeddedResource>
<Compile Update="Properties\Resources.Designer.cs">
<DesignTime>True</DesignTime>
<AutoGen>True</AutoGen>
<DependentUpon>Resources.resx</DependentUpon>
</Compile>
</ItemGroup>

<!-- Additional files to include in the output -->
<ItemGroup>
<None Include="plugin.json">
Expand Down
Loading