355 lines
14 KiB
Mathematica
355 lines
14 KiB
Mathematica
|
#import <XCTest/XCTest.h>
|
||
|
#import "NSCalendar+WMFCommonCalendars.h"
|
||
|
|
||
|
@interface WMFDateCalculationTests : XCTestCase
|
||
|
|
||
|
@end
|
||
|
|
||
|
@implementation WMFDateCalculationTests
|
||
|
|
||
|
- (void)testDaysBetweenUnder24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 2;
|
||
|
toDateComponents.hour = 9;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSInteger days = [calendar wmf_daysFromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(days == 1);
|
||
|
}
|
||
|
|
||
|
- (void)testDaysBetweenOver24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 2;
|
||
|
toDateComponents.hour = 12;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSInteger days = [calendar wmf_daysFromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(days == 1);
|
||
|
}
|
||
|
|
||
|
- (void)testDaysBetweenUnder48Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 3;
|
||
|
toDateComponents.hour = 9;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSInteger days = [calendar wmf_daysFromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(days == 2);
|
||
|
}
|
||
|
|
||
|
- (void)testDaysBetweenWrapMonths {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 9;
|
||
|
fromDateComponents.day = 30;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 8;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSInteger days = [calendar wmf_daysFromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(days == 1);
|
||
|
}
|
||
|
|
||
|
- (void)testComponentsBetweenUnder24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 2;
|
||
|
toDateComponents.hour = 9;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSDateComponents *components = [calendar wmf_components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(components.hour == 21);
|
||
|
}
|
||
|
|
||
|
- (void)testComponentsBetweenOver24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 2;
|
||
|
toDateComponents.hour = 12;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSDateComponents *components = [calendar wmf_components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(components.day == 1);
|
||
|
}
|
||
|
|
||
|
- (void)testComponentsBetweenUnder48Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 3;
|
||
|
toDateComponents.hour = 9;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSDateComponents *components = [calendar wmf_components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(components.day == 1);
|
||
|
XCTAssertTrue(components.hour == 21);
|
||
|
}
|
||
|
|
||
|
- (void)testComponentsBetweenWrapMonths {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 9;
|
||
|
fromDateComponents.day = 30;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 8;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSDateComponents *components = [calendar wmf_components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:fromDate toDate:toDate];
|
||
|
XCTAssertTrue(components.day == 0);
|
||
|
XCTAssertTrue(components.hour == 23);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringYesterday {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 9;
|
||
|
fromDateComponents.day = 30;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 8;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"Yesterday"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringTwoDaysAgo {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 9;
|
||
|
fromDateComponents.day = 29;
|
||
|
fromDateComponents.hour = 9;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 8;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"2 days ago"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringDifferentDayUnder24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 2;
|
||
|
toDateComponents.hour = 9;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"Yesterday"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringSameDayUnder24Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 1;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 23;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"Today"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringSameDayUnder12Hours {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 15;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"3 hours ago"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringSameDayUnder12HoursSingular {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 13;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"1 hour ago"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringSameDayUnder1Hour {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
fromDateComponents.minute = 30;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 12;
|
||
|
toDateComponents.minute = 35;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"5 minutes ago"]);
|
||
|
}
|
||
|
|
||
|
- (void)testRelativeDateStringSameDayUnder1Minute {
|
||
|
NSCalendar *calendar = [NSCalendar wmf_gregorianCalendar];
|
||
|
|
||
|
NSDateComponents *fromDateComponents = [[NSDateComponents alloc] init];
|
||
|
fromDateComponents.year = 2016;
|
||
|
fromDateComponents.month = 10;
|
||
|
fromDateComponents.day = 1;
|
||
|
fromDateComponents.hour = 12;
|
||
|
fromDateComponents.minute = 30;
|
||
|
fromDateComponents.second = 30;
|
||
|
|
||
|
NSDateComponents *toDateComponents = [[NSDateComponents alloc] init];
|
||
|
toDateComponents.year = 2016;
|
||
|
toDateComponents.month = 10;
|
||
|
toDateComponents.day = 1;
|
||
|
toDateComponents.hour = 12;
|
||
|
toDateComponents.minute = 30;
|
||
|
toDateComponents.second = 35;
|
||
|
|
||
|
NSDate *fromDate = [calendar dateFromComponents:fromDateComponents];
|
||
|
NSDate *toDate = [calendar dateFromComponents:toDateComponents];
|
||
|
NSString *string = [fromDate wmf_localizedRelativeDateStringFromLocalDateToLocalDate:toDate];
|
||
|
XCTAssert([string isEqualToString:@"Just now"]);
|
||
|
}
|
||
|
|
||
|
@end
|