diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac.xcodeproj/xcshareddata/xcschemes/KeymanEngine4Mac.xcscheme b/mac/KeymanEngine4Mac/KeymanEngine4Mac.xcodeproj/xcshareddata/xcschemes/KeymanEngine4Mac.xcscheme
index 6cfed38610..a124497518 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4Mac.xcodeproj/xcshareddata/xcschemes/KeymanEngine4Mac.xcscheme
+++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac.xcodeproj/xcshareddata/xcschemes/KeymanEngine4Mac.xcscheme
@@ -46,6 +46,62 @@
BlueprintName = "KeymanEngine4MacTests"
ReferencedContainer = "container:KeymanEngine4Mac.xcodeproj">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.h b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.h
index 3749751808..316b0068c8 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.h
+++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.h
@@ -30,7 +30,6 @@ typedef enum {EndAction,
@property (strong, nonatomic, readonly) NSString *typeName;
@property (strong, nonatomic, readonly) NSString *content;
@property (readonly) int backspaceCount;
-@property (readonly) BOOL impactsClient;
-(instancetype)initWithType: (ActionType)type actionContent:(NSString*)content backspaceCount:(int)backspaceCount NS_DESIGNATED_INITIALIZER;
//must implement the designated initializer of the superclass
-(instancetype)init;
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.m b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.m
index 195ca82e12..d871d44399 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.m
+++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreAction.m
@@ -89,18 +89,15 @@
*/
-(instancetype)init {
return [self initWithType:AlertAction actionContent:@"" backspaceCount:0];
- _impactsClient = NO;
}
-(instancetype)initCharacterAction:(NSString*)content {
self = [self initWithType: CharacterAction actionContent:content backspaceCount:0];
- _impactsClient = YES;
return self;
}
-(instancetype)initCharacterBackspaceAction:(NSString*)content {
self = [self initWithType: CharacterBackspaceAction actionContent:content backspaceCount:1];
- _impactsClient = YES;
return self;
}
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreWrapper.m b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreWrapper.m
index 35751a83f6..9291b35bd6 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreWrapper.m
+++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/CoreWrapper/CoreWrapper.m
@@ -207,7 +207,7 @@
NSString *characterString = [self.coreHelper utf32ValueToString:actionStruct->character];
action = [[CoreAction alloc] initWithType: CharacterAction actionContent:characterString backspaceCount:0];
NSLog(@"createCoreActionForActionStruct actionStruct->character decimal: %u, hex: %X", actionStruct->character, actionStruct->character);
- NSLog(@"createCoreActionForActionStruct converted unicode string: '%@'", characterString);
+ NSLog(@"createCoreActionForActionStruct converted unicode string: '%@' length=%lu", characterString, characterString.length);
break;
}
case KM_KBP_IT_MARKER: {
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMEngine.m b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMEngine.m
index 15e708e276..9ef7a4a8e6 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMEngine.m
+++ b/mac/KeymanEngine4Mac/KeymanEngine4Mac/KME/KMEngine.m
@@ -162,9 +162,8 @@ const NSString* kEasterEggKmxName = @"EnglishSpanish.kmx";
// update context from core
[self.tmpCtxBuf setString:self.keymanCore.context];
return coreActions;
- // TODO: delete this commented out code and use CoreAction array
- // convert the CoreAction objects into Dictionary objects expected by the Input Method
- // return [self.coreHelper actionObjectArrayToLegacyActionMapArray:coreActions];
+ // TODO: integrate the different contexts
+ // -- probably ignore/trash tmpCtxBuf because we update local context using actions
}
} else {
NSArray *actions = nil;
@@ -203,8 +202,7 @@ const NSString* kEasterEggKmxName = @"EnglishSpanish.kmx";
} else {
// update context from core
[self.tmpCtxBuf setString:self.keymanCore.context];
- // convert the CoreAction objects into Dictionary objects expected by the Input Method
- return [self.coreHelper actionObjectArrayToLegacyActionMapArray:coreActions];
+ return coreActions;
}
} else {
NSArray *actions = nil;
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4MacTests/CoreHelperTests.m b/mac/KeymanEngine4Mac/KeymanEngine4MacTests/CoreHelperTests.m
index ceba5b5843..4c2fa97a09 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4MacTests/CoreHelperTests.m
+++ b/mac/KeymanEngine4Mac/KeymanEngine4MacTests/CoreHelperTests.m
@@ -85,6 +85,7 @@ ActionArrayOptimizer *optimizer;
XCTAssertEqual(keymanModifierState, 0, @"Failed conversion of Mac Help key flag from Mac to Keyman cleared modifier state.");
}
+/*
- (void)testOptimize_MultipleCharacterActions_CombinedToSingleAction {
CoreAction *characterAAction = [[CoreAction alloc] initWithType:CharacterAction actionContent:@"A" backspaceCount:0];
CoreAction *characterBAction = [[CoreAction alloc] initWithType:CharacterAction actionContent:@"B" backspaceCount:0];
@@ -108,7 +109,7 @@ ActionArrayOptimizer *optimizer;
CoreAction *action = optimizedArray[0];
XCTAssert(action.backspaceCount==2, @"Expected a backspace count of 2.");
}
-
+*/
- (void)testOptimize_OneBackspaceAndOneCharacterAction_RetainedWithEndActionStripped {
CoreAction *backspaceAction = [[CoreAction alloc] initWithType:CharacterBackspaceAction actionContent:@"" backspaceCount:1];
CoreAction *characterAAction = [[CoreAction alloc] initWithType:CharacterAction actionContent:@"A" backspaceCount:0];
diff --git a/mac/KeymanEngine4Mac/KeymanEngine4MacTests/KMEngineTests.m b/mac/KeymanEngine4Mac/KeymanEngine4MacTests/KMEngineTests.m
index c83baa08f0..34b1cfe06b 100644
--- a/mac/KeymanEngine4Mac/KeymanEngine4MacTests/KMEngineTests.m
+++ b/mac/KeymanEngine4Mac/KeymanEngine4MacTests/KMEngineTests.m
@@ -10,6 +10,7 @@
#import
#import "KeymanEngineTestsStaticHelperMethods.h"
#import "KMEngine.h"
+#import "CoreAction.h"
@interface KMEngineTests : XCTestCase
@end
@@ -73,6 +74,7 @@ NSString * names[nCombinations];
XCTAssert(actions == nil, @"Expected nil array of actions");
}
+// TODO:
- (void)testprocessEvent_eventForUnmappedKey_ReturnsNoActions {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileTestMacEngine];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
@@ -87,14 +89,13 @@ NSString * names[nCombinations];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"a" charactersIgnoringModifiers:@"a" isARepeat:NO keyCode:kVK_ANSI_A];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- XCTAssert([output isEqualToString:@"\u00C7"], @"Expected capital C cedille (U+00C7)");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ XCTAssert([action.content isEqualToString:@"\u00C7"], @"Expected capital C cedille (U+00C7)");
}
-- (void)testprocessEvent_eventForCtrlShiftNumeralWithCipherMusicKmx_ReturnsQstrActionForCorrectUnicodeSurrogatePair {
+// TODO: fails with core, investigate
+-(void)testprocessEvent_eventForCtrlShiftNumeralWithCipherMusicKmx_ReturnsQstrActionForCorrectUnicodeSurrogatePair {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForCipherMusicTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
for (int i = 1; i <= 6; i++)
@@ -137,13 +138,12 @@ NSString * names[nCombinations];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:NSEventModifierFlagShift timestamp:0 windowNumber:0 context:nil characters:@"{" charactersIgnoringModifiers:@"[" isARepeat:NO keyCode:kVK_ANSI_LeftBracket];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- XCTAssert([output isEqualToString:expectedStartSlideSurrogatePair], @"Output incorrect");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ XCTAssert([action.content isEqualToString:expectedStartSlideSurrogatePair], @"Output incorrect");
}
+// TODO: fails with core, investigate
- (void)testprocessEvent_eventForUnshiftedNumeralWithCipherMusicKmx_ReturnsQstrActionToInsertNumeral {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForCipherMusicTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
@@ -154,15 +154,14 @@ NSString * names[nCombinations];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:numeral charactersIgnoringModifiers:numeral isARepeat:NO keyCode:ansiCode];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- XCTAssert([output isEqualToString:numeral], @"Output incorrect");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ XCTAssert([action.content isEqualToString:numeral], @"Output incorrect");
[engine setContextBuffer:@""];
}
}
+// TODO: fails with core, returns CharacterAction
- (void)testprocessEvent_eventForShiftNumeralsWithoutRulesInCipherMusicKmx_ReturnsNoAction {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForCipherMusicTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
@@ -205,6 +204,7 @@ NSString * names[nCombinations];
}
}
+// TODO: fails with core, returns CharacterAction
- (void)testprocessEvent_eventForPeriodWithCipherMusicKmx_ReturnsNoAction {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForCipherMusicTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
@@ -213,6 +213,7 @@ NSString * names[nCombinations];
XCTAssert(actions.count == 0, @"Expected no actions");
}
+// TODO: fails with core, returns CharacterAction
- (void)testprocessEvent_eventForCtrl8WithCipherMusicKmx_ReturnsNoAction {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForCipherMusicTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
@@ -273,10 +274,9 @@ NSString * names[nCombinations];
NSString * keyCombination = [names[i] stringByAppendingFormat:@" %@", charactersIgnoringModifiers];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action for %@", keyCombination);
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action for %@", keyCombination);
- NSString *output = [action objectForKey:actionType];
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction %@", keyCombination);
+ NSString *output = [action content];
NSLog(@"output = %@", output);
switch (modifiers[i]) {
case LEFT_SHIFT_FLAG:
@@ -347,10 +347,9 @@ NSString * names[nCombinations];
NSString * keyCombination = [names[i] stringByAppendingFormat:@" %@", charactersIgnoringModifiers];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action for %@", keyCombination);
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action for %@", keyCombination);
- NSString *output = [action objectForKey:actionType];
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction for %@", keyCombination);
+ NSString *output = [action content];
NSLog(@"output = %@", output);
switch (modifiers[i]) {
case LEFT_SHIFT_FLAG:
@@ -410,68 +409,78 @@ NSString * names[nCombinations];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:flag timestamp:0 windowNumber:0 context:nil characters:character charactersIgnoringModifiers:lcChar isARepeat:NO keyCode:code];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected 1 action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- return output;
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ return [action content];
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_native_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"u" modifierFlags:0 keyCode:kVK_ANSI_U];
XCTAssert([output isEqualToString:@" Native"], @"Expected checkPlatform to return YES for native.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_NATIVE_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"U" modifierFlags:NSEventModifierFlagShift keyCode:kVK_ANSI_U];
XCTAssert([output isEqualToString:@" Native"], @"Expected checkPlatform to return YES for NATIVE.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_hardware_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"p" modifierFlags:0 keyCode:kVK_ANSI_P];
XCTAssert([output isEqualToString:@" Hardware"], @"Expected checkPlatform to return YES for hardware.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_HARDWARE_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"P" modifierFlags:NSEventModifierFlagShift keyCode:kVK_ANSI_P];
XCTAssert([output isEqualToString:@" Hardware"], @"Expected checkPlatform to return YES for HARDWARE.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_desktop_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"I" modifierFlags:0 keyCode:kVK_ANSI_I];
XCTAssert([output isEqualToString:@" Desktop"], @"Expected checkPlatform to return YES for desktop.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_Desktop_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"I" modifierFlags:NSEventModifierFlagShift keyCode:kVK_ANSI_I];
XCTAssert([output isEqualToString:@" Desktop"], @"Expected checkPlatform to return YES for Desktop.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_macosx_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"o" modifierFlags:0 keyCode:kVK_ANSI_O];
XCTAssert([output isEqualToString:@" macOS"], @"Expected checkPlatform to return YES for macosx.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_MacOS_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"K" modifierFlags:NSEventModifierFlagShift keyCode:kVK_ANSI_K];
XCTAssert([output isEqualToString:@" macOS"], @"Expected checkPlatform to return YES for MacOS.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_MAC_ReturnsYes {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"L" modifierFlags:NSEventModifierFlagShift keyCode:kVK_ANSI_L];
XCTAssert([output isEqualToString:@" mac"], @"Expected checkPlatform to return YES for MAC.");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_Browsers_ReturnsNo {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"y" modifierFlags:0 keyCode:kVK_ANSI_Y];
XCTAssert([output isEqualToString:@" [Browser Undefined]"], @"Expected checkPlatform to return NO for all browsers (ie, chrome, firefox, safari, opera).");
}
+// TODO: rewrite for combined character actions
- (void)testCheckPlatform_multipleTokens_MatchesCorrectOneForMac {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"m" modifierFlags:0 keyCode:kVK_ANSI_M];
XCTAssert([output isEqualToString:@" macOS native desktop hardware"], @"Expected checkPlatform to return YES for macOS native desktop hardware.");
}
+// TODO: rewrite for combined character actions
- (void)testContextMatch_InvertedPlatformLogic_NotTouch {
NSString *output = [self checkPlatform_getOutputForKeystroke:@"x" modifierFlags:0 keyCode:kVK_ANSI_X];
XCTAssert([output isEqualToString:@" !Touch"], @"Expected !touch to be true.");
@@ -502,15 +511,12 @@ NSString * names[nCombinations];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"a" charactersIgnoringModifiers:@"a" isARepeat:NO keyCode:kVK_ANSI_A];
NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 2, @"Expected 2 actions");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_BACK], @"Expected Q_BACK action");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacterBackspace], @"Expected CharacterAction");
action = actions[1];
- actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- XCTAssert([output isEqualToString:@"Z"], @"Expected output to be 'Z'.");
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ XCTAssert([action.content isEqualToString:@"Z"], @"Expected output to be 'Z'.");
}
- (void)testLegacyProcessEvent_eventForFWithElNuerKmx_ReturnsCorrectCharacter {
@@ -531,24 +537,21 @@ NSString * names[nCombinations];
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForElNuerTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@""];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"f" charactersIgnoringModifiers:@"f" isARepeat:NO keyCode:kVK_ANSI_F];
- NSArray *actions = [engine experimentallyProcessEventForUnitTestingOnly:event usingCore:YES];
+ NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected one action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
- NSString *output = [action objectForKey:actionType];
- XCTAssert([output isEqualToString:@"ɣ"], @"Expected output to be 'ɣ'.");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
+ XCTAssert([action.content isEqualToString:@"ɣ"], @"Expected output to be 'ɣ'.");
}
- (void)testCoreProcessEvent_eventDeleteWithElNuerKmx_EmptiesContextReturnsDelete {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForElNuerTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@"ɣ"];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"\b" charactersIgnoringModifiers:@"\b" isARepeat:NO keyCode:kVK_Delete];
- NSArray *actions = [engine experimentallyProcessEventForUnitTestingOnly:event usingCore:YES];
+ NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected one action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_BACK], @"Expected Q_BACK action");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacterBackspace], @"Expected CharacterBackspace action");
NSString *context = engine.contextBuffer;
XCTAssert([context isEqualToString:@""], @"Context should be empty.");
}
@@ -567,13 +570,11 @@ NSString * names[nCombinations];
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForElNuerTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@"ɣ"];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"\n" charactersIgnoringModifiers:@"\n" isARepeat:NO keyCode:kVK_Return];
- NSArray *actions = [engine experimentallyProcessEventForUnitTestingOnly:event usingCore:YES];
- XCTAssert(actions.count == 1, @"Expected one action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_RETURN], @"Expected Q_RETURN action");
+ NSArray *actions = [engine processEvent:event];
+ XCTAssert(actions.count == 2, @"Expected one action");
+ CoreAction *action = actions[1];
+ XCTAssert(action.actionType == EmitKeystrokeAction, @"Expected EmitKeystrokeAction");
NSString *context = engine.contextBuffer;
- //XCTAssert([context isEqualToString:@""], @"Context should be empty.");
XCTAssert([context isEqualToString:@"ɣ"], @"Context should be unchanged.");
}
@@ -591,13 +592,11 @@ NSString * names[nCombinations];
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForElNuerTests];
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:@"ɣ"];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"\t" charactersIgnoringModifiers:@"\t" isARepeat:NO keyCode:kVK_Tab];
- NSArray *actions = [engine experimentallyProcessEventForUnitTestingOnly:event usingCore:YES];
- XCTAssert(actions.count == 1, @"Expected one action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_RETURN], @"Expected Q_RETURN action");
+ NSArray *actions = [engine processEvent:event];
+ XCTAssert(actions.count == 2, @"Expected two actions");
+ CoreAction *action = actions[1];
+ XCTAssert(action.actionType == EmitKeystrokeAction, @"Expected EmitKeystrokeAction");
NSString *context = engine.contextBuffer;
- //XCTAssert([context isEqualToString:@""], @"Context should be empty.");
XCTAssert([context isEqualToString:@"ɣ"], @"Context should be unchanged.");
}
@@ -612,16 +611,15 @@ NSString * names[nCombinations];
}
-- (void)testCoreProcessEvent_eventSingleWithElNuerKmx_ReturnsDiacritic {
+- (void)testCoreProcessEvent_eventSingleQuoteWithElNuerKmx_ReturnsDiacritic {
KMXFile *kmxFile = [KeymanEngineTestsStaticHelperMethods getKmxFileForElNuerTests];
NSString *context = @"ɛ";
KMEngine *engine = [[KMEngine alloc] initWithKMX:kmxFile contextBuffer:context];
NSEvent *event = [NSEvent keyEventWithType:NSEventTypeKeyDown location:NSMakePoint(0, 0) modifierFlags:0 timestamp:0 windowNumber:0 context:nil characters:@"'" charactersIgnoringModifiers:@"'" isARepeat:NO keyCode:kVK_ANSI_Quote];
- NSArray *actions = [engine experimentallyProcessEventForUnitTestingOnly:event usingCore:YES];
+ NSArray *actions = [engine processEvent:event];
XCTAssert(actions.count == 1, @"Expected one action");
- NSDictionary *action = actions[0];
- NSString *actionType = [[action allKeys] objectAtIndex:0];
- XCTAssert([actionType isEqualToString:Q_STR], @"Expected Q_STR action");
+ CoreAction *action = actions[0];
+ XCTAssert([action isCharacter], @"Expected CharacterAction");
context = engine.contextBuffer;
XCTAssert([context isEqualToString:@"\u025B\u0308"], @"Context updated with diacritic.");
}