YapDatabase/Testing/UnitTesting/TestObject.m

154 lines
3.5 KiB
Objective-C

#import "TestObject.h"
@interface TestObjectMetadata ()
- (id)initWithSomeDate:(NSDate *)inDate someInt:(int)inInt;
@end
#pragma mark -
@implementation TestObject
+ (TestObject *)generateTestObject
{
return [[TestObject alloc] init];
}
+ (TestObject *)generateTestObjectWithSomeDate:(NSDate *)someDate someInt:(int)someInt
{
return [[TestObject alloc] initWithSomeDate:someDate someInt:someInt];
}
@synthesize someString;
@synthesize someNumber;
@synthesize someDate;
@synthesize someArray;
@synthesize someInt;
@synthesize someDouble;
- (NSString *)randomString:(NSUInteger)length
{
NSString *alphabet = @"abcdefghijklmnopqrstuvwxyz";
NSUInteger alphabetLength = [alphabet length];
NSMutableString *result = [NSMutableString stringWithCapacity:length];
NSUInteger i;
for (i = 0; i < length; i++)
{
uint32_t randomIndex = arc4random_uniform((uint32_t)alphabetLength);
unichar c = [alphabet characterAtIndex:(NSUInteger)randomIndex];
[result appendFormat:@"%C", c];
}
return result;
}
- (uint32_t)randomInt
{
return (int)arc4random_uniform(100);
}
- (double)randomDouble
{
return (double)arc4random_uniform(100);
}
- (id)init
{
return [self initWithSomeDate:nil someInt:[self randomInt]];
}
- (id)initWithSomeDate:(NSDate *)inSomeDate someInt:(int)inSomeInt
{
if ((self = [super init]))
{
if (inSomeDate)
someDate = inSomeDate;
else
someDate = [NSDate date];
someString = [self randomString:32];
someNumber = [NSNumber numberWithInt:[self randomInt]];
someArray = @[ [self randomString:8], [self randomString:8], [self randomString:8] ];
someInt = inSomeInt;
someDouble = [self randomDouble];
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
if ((self = [super init]))
{
someString = [decoder decodeObjectForKey:@"someString"];
someNumber = [decoder decodeObjectForKey:@"someNumber"];
someDate = [decoder decodeObjectForKey:@"someDate"];
someArray = [decoder decodeObjectForKey:@"someArray"];
someInt = [decoder decodeDoubleForKey:@"someInt"];
someDouble = [decoder decodeDoubleForKey:@"someDouble"];
}
return self;
}
//- (void)dealloc
//{
// NSLog(@"Uncomment to add breakpoint here");
//}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:someString forKey:@"someString"];
[coder encodeObject:someNumber forKey:@"someNumber"];
[coder encodeObject:someDate forKey:@"someDate"];
[coder encodeObject:someArray forKey:@"someArray"];
[coder encodeDouble:someInt forKey:@"someInt"];
[coder encodeDouble:someDouble forKey:@"someDouble"];
}
- (TestObjectMetadata *)extractMetadata
{
return [[TestObjectMetadata alloc] initWithSomeDate:someDate someInt:someInt];
}
@end
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#pragma mark -
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@implementation TestObjectMetadata
@synthesize someDate;
@synthesize someInt;
- (id)initWithSomeDate:(NSDate *)inDate someInt:(int)inInt
{
if ((self = [super init]))
{
someDate = inDate;
someInt = inInt;
}
return self;
}
- (id)initWithCoder:(NSCoder *)decoder
{
if ((self = [super init]))
{
someDate = [decoder decodeObjectForKey:@"someDate"];
someInt = [decoder decodeIntForKey:@"someInt"];
}
return self;
}
- (void)encodeWithCoder:(NSCoder *)coder
{
[coder encodeObject:someDate forKey:@"someDate"];
[coder encodeInt:someInt forKey:@"someInt"];
}
@end