From 720b25f4a3bafcbb2dbb81259644d66bcc1e5406 Mon Sep 17 00:00:00 2001 From: Richard Frith-Macdonald Date: Wed, 2 Jun 2004 05:29:13 +0000 Subject: [PATCH] Added test for unarchiving with switched class names. git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@19441 72102866-910b-0410-8b05-ffd578937521 --- Testing/nsarchiver.m | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/Testing/nsarchiver.m b/Testing/nsarchiver.m index d6c22f061..04d15240a 100644 --- a/Testing/nsarchiver.m +++ b/Testing/nsarchiver.m @@ -10,9 +10,33 @@ #include #include +@interface ClassOne : NSObject +@end +@implementation ClassOne +- (void) encodeWithCoder: (NSCoder*)aCoder +{ +} +- (id) initWithCoder: (NSCoder*)aCoder +{ + return self; +} +@end +@interface ClassTwo : NSObject +@end +@implementation ClassTwo +- (void) encodeWithCoder: (NSCoder*)aCoder +{ +} +- (id) initWithCoder: (NSCoder*)aCoder +{ + return self; +} +@end + typedef struct { char a; double b; char c;} tstruct; int main() { + id obj; id set; id arp; id arc; @@ -98,6 +122,14 @@ printf("%u\n", [arc retainCount]); printf("%s\n", [[o description] cString]); } + obj = [ClassOne new]; + [NSArchiver archiveRootObject: obj toFile: @"./nsarchiver.dat"]; + RELEASE(obj); + [NSUnarchiver decodeClassName: @"ClassOne" asClassName: @"ClassTwo"]; + obj = [NSUnarchiver unarchiveObjectWithFile: @"./nsarchiver.dat"]; + if ([obj isKindOfClass: [ClassTwo class]] == NO) + NSLog(@"ERROR: ClassOne decoded as %@", NSStringFromClass([obj class])); + #if 0 /* * Benchmark use of very lightwight archiving - a single