From 3b5ee662d6e7316433617405d2115b01813d50de Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Tue, 17 Apr 2018 10:31:47 -0400 Subject: [PATCH] Fix date comparators. --- Signal/test/util/UtilTest.m | 52 +++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/Signal/test/util/UtilTest.m b/Signal/test/util/UtilTest.m index 4091725f9..308d3ae39 100644 --- a/Signal/test/util/UtilTest.m +++ b/Signal/test/util/UtilTest.m @@ -214,6 +214,58 @@ XCTAssertFalse([DateUtil dateIsThisYear:twoYearsAhead now:now]); } +- (NSDate *)dateWithYear:(NSInteger)year + month:(NSInteger)month + day:(NSInteger)day + hour:(NSInteger)hour + minute:(NSInteger)minute +{ + NSDateComponents *components = [NSDateComponents new]; + components.year = year; + components.month = month; + components.day = day; + components.hour = hour; + components.minute = minute; + return [[NSCalendar currentCalendar] dateFromComponents:components]; +} + +- (void)testDateComparators_timezoneVMidnight +{ + NSDateFormatter *formatter = [NSDateFormatter new]; + formatter.dateStyle = NSDateFormatterLongStyle; + formatter.timeStyle = NSDateFormatterLongStyle; + + NSDate *yesterdayBeforeMidnight = [self dateWithYear:2015 month:8 day:10 hour:23 minute:55]; + NSLog(@"yesterdayBeforeMidnight: %@", [formatter stringFromDate:yesterdayBeforeMidnight]); + + NSDate *todayAfterMidnight = [self dateWithYear:2015 month:8 day:11 hour:0 minute:5]; + NSLog(@"todayAfterMidnight: %@", [formatter stringFromDate:todayAfterMidnight]); + + NSDate *todayNoon = [self dateWithYear:2015 month:8 day:11 hour:12 minute:0]; + NSLog(@"todayNoon: %@", [formatter stringFromDate:todayNoon]); + + // Before Midnight, after Midnight. + XCTAssertFalse([DateUtil dateIsToday:yesterdayBeforeMidnight now:todayAfterMidnight]); + XCTAssertTrue([DateUtil dateIsYesterday:yesterdayBeforeMidnight now:todayAfterMidnight]); + XCTAssertTrue([DateUtil dateIsOlderThanToday:yesterdayBeforeMidnight now:todayAfterMidnight]); + XCTAssertFalse([DateUtil dateIsOlderThanOneWeek:yesterdayBeforeMidnight now:todayAfterMidnight]); + XCTAssertTrue([DateUtil dateIsThisYear:yesterdayBeforeMidnight now:todayAfterMidnight]); + + // Before Midnight, noon. + XCTAssertFalse([DateUtil dateIsToday:yesterdayBeforeMidnight now:todayNoon]); + XCTAssertTrue([DateUtil dateIsYesterday:yesterdayBeforeMidnight now:todayNoon]); + XCTAssertTrue([DateUtil dateIsOlderThanToday:yesterdayBeforeMidnight now:todayNoon]); + XCTAssertFalse([DateUtil dateIsOlderThanOneWeek:yesterdayBeforeMidnight now:todayNoon]); + XCTAssertTrue([DateUtil dateIsThisYear:yesterdayBeforeMidnight now:todayNoon]); + + // After Midnight, noon. + XCTAssertTrue([DateUtil dateIsToday:todayAfterMidnight now:todayNoon]); + XCTAssertFalse([DateUtil dateIsYesterday:todayAfterMidnight now:todayNoon]); + XCTAssertFalse([DateUtil dateIsOlderThanToday:todayAfterMidnight now:todayNoon]); + XCTAssertFalse([DateUtil dateIsOlderThanOneWeek:todayAfterMidnight now:todayNoon]); + XCTAssertTrue([DateUtil dateIsThisYear:todayAfterMidnight now:todayNoon]); +} + - (void)testObjectComparison { XCTAssertTrue([NSObject isNullableObject:nil equalTo:nil]);