diff --git a/Tests/base/KVC/nsnull.m b/Tests/base/KVC/nsnull.m new file mode 100644 index 000000000..69397dc10 --- /dev/null +++ b/Tests/base/KVC/nsnull.m @@ -0,0 +1,31 @@ +#import "ObjectTesting.h" +#import +#import +#import + +int main(void) { + NSAutoreleasePool *arp = [NSAutoreleasePool new]; + + NSNull *nullObject = [NSNull null]; + + // Accessing an undefined key + id result = [nullObject valueForKey:@"undefinedKey"]; + PASS(result == nullObject, "NSNull returns itself for undefined keys."); + + // Attempting to set a value for an undefined key + PASS_EXCEPTION([nullObject setValue:@"value" forKey:@"undefinedKey"], + NSUndefinedKeyException, + "Setting an undefined key on NSNull should not crash."); + + // Accessing an undefined key path + id result = [nullObject valueForKeyPath:@"some.path"]; + PASS(result == nullObject, "NSNull returns itself for undefined key paths."); + + // Attempting to set a value for an undefined key path + PASS_EXCEPTION([nullObject setValue:@"value" forKeyPath:@"some.path"], + NSUndefinedKeyException, + "Setting an undefined key path on NSNull should not crash."); + + [arp release]; + return 0; +} \ No newline at end of file