2011-02-16 08:21:17 +00:00
|
|
|
#import <Foundation/NSString.h>
|
|
|
|
#import <Foundation/NSArray.h>
|
|
|
|
#import <Foundation/NSKeyedArchiver.h>
|
|
|
|
#import <Foundation/NSAutoreleasePool.h>
|
|
|
|
#import <Foundation/NSData.h>
|
|
|
|
#import <Foundation/NSFileManager.h>
|
|
|
|
#import <Foundation/NSURL.h>
|
|
|
|
#import <Foundation/NSSet.h>
|
|
|
|
#import <Foundation/NSValue.h>
|
|
|
|
#import "Testing.h"
|
|
|
|
#import "ObjectTesting.h"
|
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
|
|
|
NSAutoreleasePool *arp = [NSAutoreleasePool new];
|
|
|
|
NSString *val1, *val2, *val3, *s;
|
|
|
|
NSNumber *val4;
|
|
|
|
NSArray *vals1, *vals2;
|
|
|
|
NSData *data1;
|
|
|
|
NSMutableData *data2;
|
|
|
|
NSArray *a;
|
|
|
|
NSURL *u;
|
|
|
|
NSMutableSet *ms;
|
|
|
|
NSKeyedArchiver *archiver = nil;
|
|
|
|
NSKeyedUnarchiver *unarchiver = nil;
|
|
|
|
|
|
|
|
u = [NSURL URLWithString: @"http://www.w3.org/"];
|
|
|
|
ms = [NSMutableSet set];
|
|
|
|
[ms addObject: u];
|
|
|
|
data2 = [NSMutableData new];
|
|
|
|
archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: data2];
|
|
|
|
[archiver setOutputFormat: NSPropertyListXMLFormat_v1_0];
|
|
|
|
[archiver encodeObject: ms forKey: @"root"];
|
|
|
|
[archiver finishEncoding];
|
|
|
|
NSLog(@"%*.*s", [data2 length], [data2 length], [data2 bytes]);
|
|
|
|
ms = [NSKeyedUnarchiver unarchiveObjectWithData: data2];
|
|
|
|
PASS([[[ms anyObject] absoluteString] isEqual: @"http://www.w3.org/"],
|
|
|
|
"Can archive and restore a URL");
|
|
|
|
|
|
|
|
[archiver release];
|
|
|
|
[data2 release];
|
|
|
|
|
|
|
|
|
2011-02-24 16:26:01 +00:00
|
|
|
PASS_RUNS(val1 = [NSString stringWithCString:"Archiver.dat"];
|
2011-02-16 08:21:17 +00:00
|
|
|
val2 = [NSString stringWithCString:"A Goodbye"];
|
|
|
|
val3 = [NSString stringWithCString:"Testing all strings"];
|
|
|
|
val4 = [NSNumber numberWithUnsignedInt: 100];
|
|
|
|
vals1 = [[[NSArray arrayWithObject:val1]
|
|
|
|
arrayByAddingObject:val2]
|
|
|
|
arrayByAddingObject: val4];
|
2011-02-24 16:26:01 +00:00
|
|
|
vals2 = [vals1 arrayByAddingObject: val2];,
|
2011-02-16 08:21:17 +00:00
|
|
|
"We can build basic strings and arrays for tests");
|
|
|
|
|
|
|
|
PASS([NSKeyedArchiver archiveRootObject:vals2 toFile:val1],
|
|
|
|
"archiveRootObject:toFile: seems ok");
|
|
|
|
|
|
|
|
data1 = [NSKeyedArchiver archivedDataWithRootObject:vals2];
|
|
|
|
PASS((data1 != nil && [data1 length] != 0),
|
|
|
|
"archivedDataWithRootObject: seems ok");
|
|
|
|
|
|
|
|
a = [NSKeyedUnarchiver unarchiveObjectWithData:data1];
|
|
|
|
NSLog(@"From data: original array %@, decoded array %@",vals2, a);
|
|
|
|
PASS((a != nil && [a isKindOfClass:[NSArray class]] && [a isEqual:vals2]),
|
|
|
|
"unarchiveObjectWithData: seems ok");
|
|
|
|
|
|
|
|
a = [NSKeyedUnarchiver unarchiveObjectWithFile:val1];
|
|
|
|
NSLog(@"From file: original array %@, decoded array %@",vals2, a);
|
|
|
|
PASS((a != nil && [a isKindOfClass:[NSArray class]] && [a isEqual:vals2]),
|
|
|
|
"unarchiveObjectWithFile: seems ok");
|
|
|
|
|
|
|
|
// encode
|
|
|
|
data2 = [[NSMutableData alloc] initWithCapacity: 10240];
|
|
|
|
archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData: data2];
|
|
|
|
[archiver encodeObject: val3 forKey: @"string"];
|
|
|
|
[archiver finishEncoding];
|
|
|
|
|
|
|
|
// decode...
|
|
|
|
unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData: data2];
|
|
|
|
s = [[unarchiver decodeObjectForKey: @"string"] retain];
|
|
|
|
PASS((s != nil && [s isKindOfClass:[NSString class]] && [s isEqual: val3]),
|
|
|
|
"encodeObject:forKey: seems okay");
|
|
|
|
[data2 release];
|
|
|
|
|
|
|
|
NSLog(@"Original string: %@, unarchived string: %@",val3, s);
|
|
|
|
|
|
|
|
[[NSFileManager defaultManager] removeFileAtPath: val1 handler: nil];
|
|
|
|
[arp release]; arp = nil;
|
|
|
|
return 0;
|
|
|
|
}
|