spiegel-keyman/windows/src/unit-tests/ui-language-manager/Keyman.System.Test.UILanguageManagerTest.pas
Marc Durdin 83b8c4af08 chore(windows): tests should be case-sensitive
DUnitX by default does case-insensitive string equality assertions, and
we don't really want to make that assumption.

There was one minor fail uncovered in Keyman.System.UILanguageManager as
a result of this -- it now returns a matching entry as found in the
list of UI languages, rather than the input, to get same case as the UI
language list entry.

Thank you @ermshiperete.
2021-02-03 06:52:52 +11:00

61 lines
1.3 KiB
ObjectPascal

unit Keyman.System.Test.UILanguageManagerTest;
interface
uses
System.Classes,
System.SysUtils,
DUnitX.TestFramework;
type
[TestFixture]
TUILanguageManagerTest = class(TObject)
public
[Setup]
procedure Setup;
[Test]
procedure TestFind;
end;
implementation
uses
Keyman.System.UILanguageManager;
{ TUILanguageManagerTest }
procedure TUILanguageManagerTest.Setup;
begin
Assert.IgnoreCaseDefault := False;
end;
procedure TUILanguageManagerTest.TestFind;
var
ktags, utags: TStringList;
begin
ktags := TStringList.Create;
utags := TStringList.Create;
ktags.CommaText := 'en,de,fr,kan-knda-in,my,pt-br,qqq,ta,tr,vec';
utags.CommaText := 'en-US';
Assert.AreEqual('en', TUILanguageManager.Find(ktags, utags));
ktags.CommaText := 'en,en-au,de,fr,kan-knda-in,my,pt-br,qqq,ta,tr,vec';
Assert.AreEqual('en', TUILanguageManager.Find(ktags, utags));
utags.CommaText := 'en-AU';
Assert.AreEqual('en-au', TUILanguageManager.Find(ktags, utags));
utags.CommaText := 'kan';
Assert.AreEqual('kan-knda-in', TUILanguageManager.Find(ktags, utags));
ktags.CommaText := 'en,en-au,de,fr,km,kan-knda-in,my,pt-br,qqq,ta,tr,vec';
utags.CommaText := 'jar,km-KH';
Assert.AreEqual('km', TUILanguageManager.Find(ktags, utags));
ktags.Free;
utags.Free;
end;
end.