Using better key mapper test to not depend on current input source

This commit is contained in:
michael starke
2017-01-27 10:50:18 +01:00
parent 43d98b9b38
commit a8372f4ac4

View File

@@ -20,32 +20,22 @@
- (void)testKeyMapper { - (void)testKeyMapper {
/* Test only works for german keyboard layout! */
MPModifiedKey key = [MPKeyMapper modifiedKeyForCharacter:@"A"];
XCTAssertEqual(kVK_ANSI_A, key.keyCode);
XCTAssertEqual(kCGEventFlagMaskShift, key.modifier);
key = [MPKeyMapper modifiedKeyForCharacter:@"»"];
XCTAssertEqual(kVK_ANSI_Q, key.keyCode);
XCTAssertEqual((kCGEventFlagMaskShift | kCGEventFlagMaskAlternate), key.modifier);
key = [MPKeyMapper modifiedKeyForCharacter:@""];
XCTAssertEqual(kVK_ANSI_RightBracket, key.keyCode);
XCTAssertEqual((kCGEventFlagMaskShift | kCGEventFlagMaskAlternate), key.modifier);
/* /*
XCTAssertEqualObjects(@"a",[MPKeyMapper stringForKey:kVK_ANSI_A modifier:0]); We could set certain keyboard layouts to run this test invariantly
XCTAssertEqualObjects(@"A",[MPKeyMapper stringForKey:kVK_ANSI_A modifier:kCGEventFlagMaskShift]); The simpler aproach is to go full circle to check if the desired character is the actual character we get
XCTAssertEqualObjects(@"8",[MPKeyMapper stringForKey:kVK_ANSI_8 modifier:0]);
XCTAssertEqualObjects(@"(",[MPKeyMapper stringForKey:kVK_ANSI_8 modifier:kCGEventFlagMaskShift]);
XCTAssertEqualObjects(@"{",[MPKeyMapper stringForKey:kVK_ANSI_8 modifier:kCGEventFlagMaskAlternate]);
XCTAssertEqualObjects(@"n",[MPKeyMapper stringForKey:kVK_ANSI_N modifier:0]);
XCTAssertEqualObjects(@"N",[MPKeyMapper stringForKey:kVK_ANSI_N modifier:kCGEventFlagMaskShift]);
XCTAssertEqualObjects(@"~",[MPKeyMapper stringForKey:kVK_ANSI_N modifier:kCGEventFlagMaskAlternate]);
*/ */
/* Ì - has no key for US and DVORAK layout */
NSString *test = @"aB(]©®@fl~±»";
[test enumerateSubstringsInRange:NSMakeRange(0, test.length) options:NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString * _Nullable substring, NSRange substringRange, NSRange enclosingRange, BOOL * _Nonnull stop) {
/* we only support non-composed characters*/
if(substring.length == 1) {
MPModifiedKey key = [MPKeyMapper modifiedKeyForCharacter:substring];
NSString *result = [MPKeyMapper stringForModifiedKey:key];
XCTAssertEqualObjects(substring, result);
}
}];
} }
@end @end