diff options
| author | Tomáš Znamenáček | 2014-08-06 10:26:25 +0200 | 
|---|---|---|
| committer | Tomáš Znamenáček | 2015-01-07 15:33:46 +0100 | 
| commit | e30504eb2a7729333d3ebe9266ac493deb9ea02c (patch) | |
| tree | a17eca00ed2f82d264bc1b7fcd27360bf7c6fff6 | |
| parent | 1bdadb166d7ac60a9ea8947e110146bf39a7fb9b (diff) | |
| download | MASShortcut-e30504eb2a7729333d3ebe9266ac493deb9ea02c.tar.bz2 | |
Implemented equality for shortcut objects.
Shortcuts are equal if and only if their key codes and modifier flags are.
| -rw-r--r-- | Framework/MASShortcut.m | 14 | ||||
| -rw-r--r-- | Framework/MASShortcutTests.m | 14 | 
2 files changed, 28 insertions, 0 deletions
| diff --git a/Framework/MASShortcut.m b/Framework/MASShortcut.m index 3852a9a..14d8061 100644 --- a/Framework/MASShortcut.m +++ b/Framework/MASShortcut.m @@ -196,6 +196,20 @@ static NSString *const MASShortcutModifierFlags = @"ModifierFlags";      return (count ? [NSString stringWithCharacters:chars length:count] : @"");  } +#pragma mark NSObject + +- (BOOL) isEqual: (MASShortcut*) object +{ +    return [object isKindOfClass:[self class]] +        && (object.keyCode == self.keyCode) +        && (object.modifierFlags == self.modifierFlags); +} + +- (NSUInteger) hash +{ +    return self.keyCode + self.modifierFlags; +} +  #pragma mark NSCoding  - (void)encodeWithCoder:(NSCoder *)coder diff --git a/Framework/MASShortcutTests.m b/Framework/MASShortcutTests.m index 37a801f..d1cd8c4 100644 --- a/Framework/MASShortcutTests.m +++ b/Framework/MASShortcutTests.m @@ -5,6 +5,20 @@  @implementation MASShortcutTests +- (void) testEquality +{ +    MASShortcut *keyA = [MASShortcut shortcutWithKeyCode:1 modifierFlags:NSControlKeyMask]; +    MASShortcut *keyB = [MASShortcut shortcutWithKeyCode:2 modifierFlags:NSControlKeyMask]; +    MASShortcut *keyC = [MASShortcut shortcutWithKeyCode:1 modifierFlags:NSAlternateKeyMask]; +    MASShortcut *keyD = [MASShortcut shortcutWithKeyCode:1 modifierFlags:NSControlKeyMask]; +    XCTAssertTrue([keyA isEqual:keyA], @"Shortcut is equal to itself."); +    XCTAssertTrue([keyA isEqual:[keyA copy]], @"Shortcut is equal to its copy."); +    XCTAssertFalse([keyA isEqual:keyB], @"Shortcuts not equal when key codes differ."); +    XCTAssertFalse([keyA isEqual:keyC], @"Shortcuts not equal when modifier flags differ."); +    XCTAssertTrue([keyA isEqual:keyD], @"Shortcuts are equal when key codes and modifiers are."); +    XCTAssertFalse([keyA isEqual:@"foo"], @"Shortcut not equal to an object of a different class."); +} +  - (void) testShortcutRecorderCompatibility  {      MASShortcut *key = [MASShortcut shortcutWithKeyCode:87 modifierFlags:1048576]; | 
