This PR contains all the work related to setting up this project as required to implement the [Assignment](https://repo.rock-n-code.com/rock-n-code/deep-linking-assignment/wiki/Assignment) on top, as intended. To summarise this work: - [x] created a new **Xcode** project; - [x] cloned the `Wikipedia` app and inserted it into the **Xcode** project; - [x] created the `Locations` app and also, its `Libraries` package; - [x] created the `Shared` package to share dependencies between the apps; - [x] added a `Makefile` file and implemented some **environment** and **help** commands. Co-authored-by: Javier Cicchelli <javier@rock-n-code.com> Reviewed-on: rock-n-code/deep-linking-assignment#1
355 lines
14 KiB
Objective-C
355 lines
14 KiB
Objective-C
#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
|