Skip to content

Commit

Permalink
Fix to work without fast enumeration, also fix codign style errors an…
Browse files Browse the repository at this point in the history
…d compiler warnings about operator precedence.
  • Loading branch information
rfm committed Jun 3, 2024
1 parent f93ca6e commit 51ed6a9
Showing 1 changed file with 45 additions and 26 deletions.
71 changes: 45 additions & 26 deletions Tests/gui/NSButtonCell/encoding.m
Original file line number Diff line number Diff line change
Expand Up @@ -8,59 +8,78 @@

int main()
{
START_SET("NSButtonCell encoding tests")
START_SET("NSButtonCell encoding tests")

NS_DURING
{
[NSApplication sharedApplication];
}
{
[NSApplication sharedApplication];
}
NS_HANDLER
{
if ([[localException name] isEqualToString: NSInternalInconsistencyException ])
SKIP("It looks like GNUstep backend is not yet installed")
}
{
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];
NSString *mask = @"NSButtonFlags2";
NSButtonCell *item = [[NSButtonCell alloc] init];

item.keyEquivalent = @"A";
item.keyEquivalentModifierMask = NSShiftKeyMask;

NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data];
NSMutableData *data = [NSMutableData data];
NSKeyedArchiver *archiver;

[archiver encodeRootObject:item];
archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: data];

[archiver encodeRootObject: item];
[archiver finishEncoding];

NSError* error;
NSDictionary* archive = [NSPropertyListSerialization propertyListWithData:data options:NSPropertyListImmutable format:nil error:&error];
NSError *error;
NSDictionary *archive;

NSArray* topLevelObjects = [archive objectForKey:@"$objects"];
archive = [NSPropertyListSerialization
propertyListWithData: data
options: NSPropertyListImmutable
format: nil
error: &error];

NSDictionary* dict;
NSArray *topLevelObjects = [archive objectForKey: @"$objects"];
NSEnumerator *enumerator = [topLevelObjects objectEnumerator];
NSDictionary *dict;
id element;

for (id element in topLevelObjects)
while ((element = [enumerator nextObject]) != nil)
{
if ([element isKindOfClass:[NSDictionary class]])
if ([element isKindOfClass: [NSDictionary class]])
{
dict = (NSDictionary*)element;

if ([[dict allKeys] containsObject:mask])
if ([[dict allKeys] containsObject: mask])
{
break;
}
else
{
dict = nil;
}
}
}
}
}

PASS(dict != nil, "Found a dict with a NSButtonFlags2 entry");

NSNumber* encodedKeyMask = [dict valueForKey:mask];
NSNumber *encodedKeyMask = [dict valueForKey: mask];
int expect = (NSShiftKeyMask << 8);
int modMask = (NSEventModifierFlagDeviceIndependentFlagsMask << 8);
int found = [encodedKeyMask intValue] & modMask;

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);
PASS(found == expect,
"Encoded key mask 0x%x matches expected key mask 0x%x",
found, expect);

END_SET("NSButtonCell encoding tests")
}
END_SET("NSButtonCell encoding tests")
}

0 comments on commit 51ed6a9

Please sign in to comment.