-
Notifications
You must be signed in to change notification settings - Fork 102
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add NSButtonCell, NSMenuItem keyEquivalentModifierMask encoding tests (…
- Loading branch information
1 parent
2ebf167
commit 2ab5953
Showing
4 changed files
with
115 additions
and
0 deletions.
There are no files selected for viewing
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,66 @@ | ||
#import "ObjectTesting.h" | ||
|
||
#import <Foundation/NSData.h> | ||
#import <Foundation/NSValue.h> | ||
#import <AppKit/NSApplication.h> | ||
#import <AppKit/NSEvent.h> | ||
#import <AppKit/NSButtonCell.h> | ||
|
||
int main() | ||
{ | ||
START_SET("NSButtonCell encoding tests") | ||
|
||
NS_DURING | ||
{ | ||
[NSApplication sharedApplication]; | ||
} | ||
NS_HANDLER | ||
{ | ||
if ([[localException name] isEqualToString: NSInternalInconsistencyException ]) | ||
SKIP("It looks like GNUstep backend is not yet installed") | ||
} | ||
NS_ENDHANDLER | ||
|
||
NSString* mask = @"NSButtonFlags2"; | ||
NSButtonCell* item = [[NSButtonCell alloc] init]; | ||
item.keyEquivalent = @"A"; | ||
item.keyEquivalentModifierMask = NSShiftKeyMask; | ||
|
||
NSMutableData *data = [NSMutableData data]; | ||
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; | ||
|
||
[archiver encodeRootObject:item]; | ||
[archiver finishEncoding]; | ||
|
||
NSError* error; | ||
NSDictionary* archive = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:nil error:&error]; | ||
|
||
NSArray* topLevelObjects = [archive objectForKey:@"$objects"]; | ||
|
||
NSDictionary* dict; | ||
|
||
for (id element in topLevelObjects) | ||
{ | ||
if ([element isKindOfClass:[NSDictionary class]]) | ||
{ | ||
dict = (NSDictionary*)element; | ||
|
||
if ([[dict allKeys] containsObject:mask]) | ||
{ | ||
break; | ||
} | ||
else | ||
{ | ||
dict = nil; | ||
} | ||
} | ||
} | ||
|
||
PASS(dict != nil, "Found a dict with a NSButtonFlags2 entry"); | ||
|
||
NSNumber* encodedKeyMask = [dict valueForKey:mask]; | ||
PASS(encodedKeyMask != nil, "Retrieved the NSButtonFlags2 value"); | ||
PASS([encodedKeyMask intValue] & NSEventModifierFlagDeviceIndependentFlagsMask << 8 == NSShiftKeyMask, "Encoded key mask 0x%x matches expected key mask 0x%x", [encodedKeyMask intValue] & NSEventModifierFlagDeviceIndependentFlagsMask << 8, NSShiftKeyMask << 8); | ||
|
||
END_SET("NSButtonCell encoding tests") | ||
} |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
#import "ObjectTesting.h" | ||
|
||
#import <Foundation/NSData.h> | ||
#import <Foundation/NSValue.h> | ||
#import <AppKit/NSEvent.h> | ||
#import <AppKit/NSMenuItem.h> | ||
|
||
int main() | ||
{ | ||
NSString* mask = @"NSKeyEquivModMask"; | ||
NSMenuItem* item = [[NSMenuItem alloc] init]; | ||
item.keyEquivalentModifierMask = NSShiftKeyMask; | ||
|
||
NSMutableData *data = [NSMutableData data]; | ||
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; | ||
|
||
[archiver encodeRootObject:item]; | ||
[archiver finishEncoding]; | ||
|
||
NSError* error; | ||
NSDictionary* archive = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:nil error:&error]; | ||
|
||
NSArray* topLevelObjects = [archive objectForKey:@"$objects"]; | ||
|
||
NSDictionary* dict; | ||
|
||
for (id element in topLevelObjects) | ||
{ | ||
if ([element isKindOfClass:[NSDictionary class]]) | ||
{ | ||
dict = (NSDictionary*)element; | ||
|
||
if ([[dict allKeys] containsObject:mask]) | ||
{ | ||
break; | ||
} | ||
else | ||
{ | ||
dict = nil; | ||
} | ||
} | ||
} | ||
|
||
PASS(dict != nil, "Found a dict with a NSKeyEquivModMask entry"); | ||
|
||
NSNumber* encodedKeyMask = [dict valueForKey:mask]; | ||
PASS(encodedKeyMask != nil, "Retrieved the NSKeyEquivModMask value"); | ||
PASS([encodedKeyMask intValue] == NSShiftKeyMask, "Encoded key mask 0x%x matches expected key mask 0x%x", [encodedKeyMask intValue], NSShiftKeyMask); | ||
} |