#import "ObjectTesting.h" #import #import #import #import #define PASS_MODIFIER(index, expected) PASS([[menu itemAtIndex:index] keyEquivalentModifierMask] == expected, "Modifier mask 0x%x equals expected 0x%x", [[menu itemAtIndex:index] keyEquivalentModifierMask], expected); int main() { START_SET("GSXib5KeyedUnarchiver NSMenu tests") NS_DURING { [NSApplication sharedApplication]; } NS_HANDLER { if ([[localException name] isEqualToString: NSInternalInconsistencyException ]) { SKIP("It looks like GNUstep backend is not yet installed") } } NS_ENDHANDLER; NSData *data; GSXibKeyedUnarchiver *unarchiver; NSArray *rootObjects; NSEnumerator *enumerator; id element; NSMenu *menu; data = [NSData dataWithContentsOfFile:@"Menu.xib"]; unarchiver = [GSXibKeyedUnarchiver unarchiverForReadingWithData:data]; rootObjects = [unarchiver decodeObjectForKey: @"IBDocument.RootObjects"]; enumerator = [rootObjects objectEnumerator]; while ((element = [enumerator nextObject]) != nil) { if ([element isKindOfClass: [NSMenu class]]) { menu = (NSMenu*)element; break; } } PASS(menu != nil, "Top-level NSMenu was found") // Empty node PASS_MODIFIER(0, 0) // PASS_MODIFIER(1, NSShiftKeyMask) // PASS_MODIFIER(2, NSCommandKeyMask) // PASS_MODIFIER(3, NSAlternateKeyMask) // No modifierMask element PASS_MODIFIER(4, NSCommandKeyMask) // No modifierMask element and no keyEquivalent attribute PASS_MODIFIER(5, NSCommandKeyMask) // no modfierMask PASS_MODIFIER(6, NSCommandKeyMask) // empty modifierMask PASS_MODIFIER(7, 0) // explicit modifier mask PASS_MODIFIER(8, NSCommandKeyMask) END_SET("GSXib5KeyedUnarchiver NSMenu tests") return 0; }