У меня есть приложение, которое использует CoreData.Одна из сущностей содержит атрибут date
, который, ну ... дата.Я пишу тест для проверки того, что метка времени, переданная методу класса для класса этой сущности, конвертируется в правильный NSDate
.
Вот мой тестовый код:
NSDate *now = [NSDate date];
NSTimeInterval ts = [now timeIntervalSince1970];
// paramDict is a dictionary with attributes and values
[paramDict setValue:[NSNumber numberWithDouble:ts] forKey:@"date"];
MyEntity *myEntity = [MyEntity entityWithAttributes:paramDict inContext:testMOContext];
STAssertTrue([now isEqualToDate:[myEntity date]], @"dates were not equal");
фрагмент целого теста, который проверяет, все ли параметры были установлены правильно.Что интересно, так это то, что проверки утверждений даты терпят неудачу случайно.Я полагаю, что неудачи как-то связаны с потерей точности двойного плавания?Как мне проверить дату в сценарии такого рода?
update
Отметка времени преобразуется в дату следующим способом:
NSDate *date = [NSDate dateWithTimeIntervalSince1970:[[paramDict valueForKey:@"date"] doubleValue]];
[newObject setDate:date];