blob: a8e340f86b2f48920a448cd7d1a5d22321679984 [file] [log] [blame]
//---------------------------------------------------------------------------------------------
// Copyright (c) 2022 Google LLC
// Licensed under the MIT License. See License.txt in the project root for license information.
//--------------------------------------------------------------------------------------------*/
import 'package:test/test.dart';
import 'package:web_locale_keymap/web_locale_keymap.dart';
final int _kLowerA = 'a'.codeUnitAt(0);
final int _kUpperA = 'A'.codeUnitAt(0);
final int _kLowerZ = 'z'.codeUnitAt(0);
final int _kUpperZ = 'Z'.codeUnitAt(0);
bool _isLetter(String char) {
if (char.length != 1) {
return false;
}
final int charCode = char.codeUnitAt(0);
return (charCode >= _kLowerA && charCode <= _kLowerZ)
|| (charCode >= _kUpperA && charCode <= _kUpperZ);
}
String _fromCharCode(int? logicalKey) {
if (logicalKey == null) {
return '';
}
return String.fromCharCode(logicalKey);
}
void verifyEntry(LocaleKeymap mapping, String eventCode, List<String> eventKeys, String mappedResult) {
// If the first two entry of KeyboardEvent.key are letter keys such as "a" and
// "A", then KeyboardEvent.keyCode is the upper letter such as "A". Otherwise,
// this field must not be used (in reality this field may or may not be
// platform independent).
int? eventKeyCode;
{
if (_isLetter(eventKeys[0]) && _isLetter(eventKeys[1])) {
eventKeyCode = eventKeys[0].toLowerCase().codeUnitAt(0);
}
}
int index = 0;
for (final String eventKey in eventKeys) {
if (eventKey.isEmpty) {
continue;
}
test('$eventCode $index', () {
expect(
_fromCharCode(mapping.getLogicalKey(eventCode, eventKey, eventKeyCode ?? 0)),
mappedResult,
);
});
index += 1;
}
}