mirror of
https://github.com/keymanapp/keyman.git
synced 2026-10-25 07:17:41 +00:00
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.
61 lines
1.3 KiB
ObjectPascal
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.
|