Я хочу сравнить два массива для эквивалентных объектов, один - свойство внутри моего класса, а другой - в моем методе тестирования.
Я не могу сравнивать напрямую, поскольку объекты будут выделяться отдельно и, таким образом, будут иметь разные области памяти.
Чтобы обойти это, я реализовал описание для своего объекта, чтобы перечислить его свойства в строке: (vel - это CGPoint)
- (NSString *)description {
return [NSString stringWithFormat:@"vel:%.5f%.5f",vel.x,vel.y];
}
Я тестирую с:
NSLog(@"moveArray description: %@",[moveArray description]);
NSLog(@"currentMoves description: %@", [p.currentMoves description]);
[[theValue([moveArray description]) should] equal:theValue([p.currentMoves description])];
Мой NSLog урожай:
Project[13083:207] moveArray description: (
"vel:0.38723-0.92198"
)
Project[13083:207] currentMoves description: (
"vel:0.38723-0.92198"
)
Но мой тест не пройден:
/ProjectPath/ObjectTest.m:37: error: -[ObjectTest example] : 'Object should pass test' [FAILED], expected subject to equal <9086b104>, got <7099e004>
theValue инициализирует KWValue байтами и типом target-C и устанавливает его значение с помощью
- (id)initWithBytes:(const void *)bytes objCType:(const char *)anObjCType {
if ((self = [super init])) {
objCType = anObjCType;
value = [[NSValue alloc] initWithBytes:bytes objCType:anObjCType];
}
return self;
}
Как сравнить, что эти два массива имеют объекты эквивалентных значений?