[
  {
    "path": ".gitignore",
    "content": "# Xcode\n.DS_Store\n*/build/*\n*.pbxuser\n!default.pbxuser\n*.mode1v3\n!default.mode1v3\n*.mode2v3\n!default.mode2v3\n*.perspectivev3\n!default.perspectivev3\nxcuserdata\nprofile\n*.moved-aside\nDerivedData\n.idea/\n*.hmap\n*.xccheckout\n\n#CocoaPods\nPods\n"
  },
  {
    "path": ".ruby-version",
    "content": "2.6.3\n"
  },
  {
    "path": ".swift-version",
    "content": "5.0"
  },
  {
    "path": ".travis.yml",
    "content": "language: objective-c\nosx_image: xcode10.2\nenv: LC_CTYPE=en_US.UTF-8\nbefore_install:\n#   - sudo easy_install cpp-coveralls\n  - bundle install\n  - bundle exec pod repo update\n  - bundle exec pod install\nscript:\n  - ./script/run-test.sh\n# after_success:\n#   - coveralls -e Pods -e Test\n"
  },
  {
    "path": "Benchmark/BenchMakeFormReferenceDate.m",
    "content": "//\n// Created by azu on 2013/06/09.\n// License MIT\n//\n\n\n#import <XCTest/XCTest.h>\n\n@interface BenchMakeFormReferenceDate : XCTestCase\n@end\n\n@implementation BenchMakeFormReferenceDate {\n}\n\n- (void)test_timeIntervalSinceReferenceDate {\n    [self measureBlock:^{\n        NSTimeInterval timeInterval = [[NSDate date] timeIntervalSinceReferenceDate] + 1000;\n        [NSDate dateWithTimeIntervalSinceReferenceDate:timeInterval];\n    }];\n}\n\n- (void)test_class_timeIntervalSinceReferenceDate {\n    [self measureBlock:^{\n        NSTimeInterval timeInterval = [NSDate timeIntervalSinceReferenceDate] + 1000;\n        [NSDate dateWithTimeIntervalSinceReferenceDate:timeInterval];\n    }];\n}\n\n- (void)test_dateWithTimeIntervalSinceNow {\n    [self measureBlock:^{\n        [NSDate dateWithTimeIntervalSinceNow:1000];\n    }];\n}\n\n- (void)test_dateByAddingTimeInterval {\n    NSDate *date = [NSDate date];\n    [self measureBlock:^{\n        [date dateByAddingTimeInterval:1000];\n    }];\n}\n\n- (void)test_dateByAddingComponents {\n    NSCalendar *calendar = [NSCalendar currentCalendar];\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n    }];\n}\n\n- (void)test_calendar {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            NSCalendar *calendar = [NSCalendar currentCalendar];\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n\n- (void)test_calendar_timezone {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            NSCalendar *calendar = [NSCalendar currentCalendar];\n//            calendar.timeZone = [NSTimeZone systemTimeZone];\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n\n- (void)test_cache_calendar_timezone {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        NSCalendar *calendar = [NSCalendar currentCalendar];\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            calendar.timeZone = [NSTimeZone systemTimeZone];\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n\n- (void)test_cache_calendar_reset_timezone {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        NSCalendar *calendar = [NSCalendar currentCalendar];\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            [NSTimeZone resetSystemTimeZone];\n            calendar.timeZone = [NSTimeZone systemTimeZone];\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n\n- (void)test_cache_calendar_local_timezone {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        NSCalendar *calendar = [NSCalendar currentCalendar];\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            calendar.timeZone = [NSTimeZone localTimeZone];\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n\n- (void)test_cache_calendar_cache_timezone {\n    NSDateComponents *oneDayComponents = [[NSDateComponents alloc] init];\n    oneDayComponents.day = 1000;\n    [self measureBlock:^{\n        NSCalendar *calendar = [NSCalendar currentCalendar];\n        calendar.timeZone = [NSTimeZone systemTimeZone];\n        for (int i = 0; i < 1000 * 1000; i++ ) {\n            [calendar dateByAddingComponents:oneDayComponents toDate:[NSDate date] options:0];\n        }\n    }];\n}\n@end\n"
  },
  {
    "path": "Benchmark/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Gemfile",
    "content": "source \"https://rubygems.org\"\ngit_source(:github) {|repo_name| \"https://github.com/#{repo_name}\" }\n\ngem \"cocoapods\"\n"
  },
  {
    "path": "LICENSE",
    "content": "Copyright (c) 2013 azu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "Makefile",
    "content": "test-all: test-en test-ja\n\ntest:\n\t./script/run-test.sh\n\ntest-en:\n\tosascript -e 'tell app \"iPhone Simulator\" to quit'\n\t./script/bin/ios-sim-locale -sdk 6.1 -language en -locale en_US\n\t./script/run-test.sh\ntest-ja:\n\tosascript -e 'tell app \"iPhone Simulator\" to quit'\n\t./script/bin/ios-sim-locale -sdk 6.1 -language ja -locale ja_JP\n\t./script/run-test.sh\n"
  },
  {
    "path": "NSDate-Escort/Date+Escort.swift",
    "content": "import Foundation\n\nextension Date {\n    static var _currentCalendar: Calendar?\n    public static var currentCalendar: Calendar {\n        get {\n            if _currentCalendar == nil || _currentCalendar?.identifier != identifier {\n                if let identifier = defaultCalendarIdentifier {\n                    _currentCalendar = Calendar(identifier: identifier)\n                } else {\n                    _currentCalendar = Calendar.current\n                }\n            }\n            _currentCalendar!.timeZone = NSTimeZone.local\n            return _currentCalendar!\n        }\n    }\n    \n    static var lock = NSLock()\n    static var identifier: Calendar.Identifier?\n    public static var defaultCalendarIdentifier: Calendar.Identifier? {\n        get {\n            lock.lock()\n            let i = identifier\n            lock.unlock()\n            return i\n        }\n        set {\n            lock.lock()\n            identifier = newValue\n            lock.unlock()\n        }\n    }\n    \n    //\n    public static func tomorrow() -> Date {\n        return Date.dateFormNow(day: 1)\n    }\n    \n    public static func yesterday() -> Date {\n        return Date.dateFormNow(day: -1)\n    }\n    \n    public static func dateFormNow(day: Int) -> Date {\n        return Date().add(day: day)\n    }\n    \n    //\n    public func startDateOfYear() -> Date {\n        return date(of: .year).date\n    }\n    \n    public func startDateOfMonth() -> Date {\n        return date(of: .month).date\n    }\n    \n    public func startDateOfWeekday() -> Date {\n        return date(of: .weekOfYear).date\n    }\n    \n    public func startDateOfDay() -> Date {\n        return date(of: .day).date\n    }\n    \n    public func date(of unit: NSCalendar.Unit) -> (date: Date, interval: TimeInterval) {\n        let calendar = type(of: self).currentCalendar as NSCalendar\n        var start: NSDate?\n        var interval: TimeInterval = 0\n        calendar.range(of: unit, start: &start, interval: &interval, for: self)\n        return (start! as Date, interval)\n    }\n        \n    \n    // comparing\n    public func isSameYear(as date: Date) -> Bool {\n        let calendar = Calendar(identifier: .gregorian)\n        let leftComponents = calendar.dateComponents([.era, .year], from: self)\n        let rightComponents = calendar.dateComponents([.era, .year], from: date)\n        return leftComponents.era == rightComponents.era\n            && leftComponents.year == rightComponents.year\n    }\n    \n    public func isThisYear() -> Bool {\n        return self.isSameYear(as: Date())\n    }\n    \n    public func isSameMonth(as date: Date) -> Bool {\n        let calendar = Calendar(identifier: .gregorian)\n        let leftComponents = calendar.dateComponents([.era, .year, .month], from: self)\n        let rightComponents = calendar.dateComponents([.era, .year, .month], from: date)\n        return leftComponents.era == rightComponents.era\n            && leftComponents.year == rightComponents.year\n            && leftComponents.month == rightComponents.month\n    }\n    \n    public func isThisMonth() -> Bool {\n        return self.isSameWeek(as: Date())\n    }\n    \n    public func isSameWeek(as date: Date) -> Bool {\n        let leftComponents = type(of: self).currentCalendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: self)\n        let rightComponents = type(of: self).currentCalendar.dateComponents([.weekOfYear, .yearForWeekOfYear], from: date)\n        return leftComponents.weekOfYear == rightComponents.weekOfYear\n            && leftComponents.yearForWeekOfYear == rightComponents.yearForWeekOfYear\n    }\n    \n    public func isThisWeek() -> Bool {\n        return self.isSameWeek(as: Date())\n    }\n    \n    public func isNextWeek() -> Bool {\n        return self.isSameWeek(as: Date().add(weekOfYear: 1))\n    }\n    \n    public func isLastWeek() -> Bool {\n        return self.isSameWeek(as: Date().add(weekOfYear: -1))\n    }\n    \n    public func isEqual(ignoringTime date: Date) -> Bool {\n        let calendar = type(of: self).currentCalendar\n        let components: Set<Calendar.Component> = [.era, .year, .month, .day]\n        let left = calendar.dateComponents(components, from: self)\n        let right = calendar.dateComponents(components, from: date)\n        return left.era == right.era\n            && left.year == right.year\n            && left.month == right.month\n            && left.day == right.day\n    }\n    \n    public func isToday() -> Bool {\n        return self.isEqual(ignoringTime: Date())\n    }\n    \n    public func isTomorrow() -> Bool {\n        return self.isEqual(ignoringTime: Date.tomorrow())\n    }\n    \n    public func isYesterday() -> Bool {\n        return self.isEqual(ignoringTime: Date.yesterday())\n    }\n    \n    public func isInPast() -> Bool {\n        return self < Date()\n    }\n    \n    public func isInFuture() -> Bool {\n        return Date() < self\n    }\n    \n    // date roles\n    public func isTypicallyWorkday() -> Bool {\n        return !self.isTypicallyWeekend()\n    }\n    \n    public func isTypicallyWeekend() -> Bool {\n        let calendar = type(of: self).currentCalendar\n        let weekdayRange = calendar.maximumRange(of: .weekday)\n        let weekdayOfDate = calendar.component(.weekday, from: self)\n        return weekdayOfDate == weekdayRange!.lowerBound || weekdayOfDate == weekdayRange!.upperBound - 1\n    }\n    \n    // retrieving interval\n    public func seconds(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.second], from: self, to: date).second!\n    }\n    \n    public func minutes(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.minute], from: self, to: date).minute!\n    }\n    \n    public func hours(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.hour], from: self, to: date).hour!\n    }\n    \n    public func days(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.day], from: self, to: date).day!\n    }\n    \n    public func months(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.month], from: self, to: date).month!\n    }\n    \n    public func years(after date: Date) -> Int {\n        return Date.currentCalendar.dateComponents([.year], from: self, to: date).year!\n    }\n    \n    public func add(era: Int? = nil, year: Int? = nil, month: Int? = nil, day: Int? = nil, hour: Int? = nil, minute: Int? = nil, second: Int? = nil, nanosecond: Int? = nil, weekday: Int? = nil, weekdayOrdinal: Int? = nil, quarter: Int? = nil, weekOfMonth: Int? = nil, weekOfYear: Int? = nil, yearForWeekOfYear: Int? = nil) -> Date {\n        var components = DateComponents()\n        \n        components.era = era\n        components.year = year\n        components.month = month\n        components.day = day\n        components.hour = hour\n        components.minute = minute\n        components.second = second\n        components.nanosecond = nanosecond\n        components.weekday = weekday\n        components.weekdayOrdinal = weekdayOrdinal\n        components.quarter = quarter\n        components.weekOfMonth = weekOfMonth\n        components.weekOfYear = weekOfYear\n        components.yearForWeekOfYear = yearForWeekOfYear\n        \n        let calendar = type(of: self).currentCalendar\n        return calendar.date(byAdding: components, to: self)!\n    }\n    \n    // decomposing\n    public var era: Int {\n        get { return type(of: self).currentCalendar.component(.era, from: self) }\n    }\n    \n    public var year: Int {\n        get { return type(of: self).currentCalendar.component(.year, from: self) }\n    }\n    \n    public var month: Int {\n        get { return type(of: self).currentCalendar.component(.month, from: self) }\n    }\n    \n    public var day: Int {\n        get { return type(of: self).currentCalendar.component(.day, from: self) }\n    }\n    \n    public var hour: Int {\n        get { return type(of: self).currentCalendar.component(.hour, from: self) }\n    }\n    \n    public var minute: Int {\n        get { return type(of: self).currentCalendar.component(.minute, from: self) }\n    }\n    \n    public var second: Int {\n        get { return type(of: self).currentCalendar.component(.second, from: self) }\n    }\n    \n    public var weekday: Int {\n        get { return type(of: self).currentCalendar.component(.weekday, from: self) }\n    }\n    \n    public var weekdayOrdinal: Int {\n        get { return type(of: self).currentCalendar.component(.weekdayOrdinal, from: self) }\n    }\n    \n    public var quarter: Int {\n        get { return type(of: self).currentCalendar.component(.quarter, from: self) }\n    }\n    \n    public var weekOfMonth: Int {\n        get { return type(of: self).currentCalendar.component(.weekOfMonth, from: self) }\n    }\n    \n    public var weekOfYear: Int {\n        get { return type(of: self).currentCalendar.component(.weekOfYear, from: self) }\n    }\n    \n    public var yearForWeekOfYear: Int {\n        get { return type(of: self).currentCalendar.component(.yearForWeekOfYear, from: self) }\n    }\n    \n    public var nanosecond: Int {\n        get { return type(of: self).currentCalendar.component(.nanosecond, from: self) }\n    }\n    \n    // extract\n    public var gregorianYear: Int {\n        get {\n            var calendar = Calendar(identifier: .gregorian)\n            calendar.timeZone = NSTimeZone.local\n            return calendar.dateComponents([.year], from: self).year!\n        }\n        \n    }\n    \n    public var nearestHour: Int {\n        get {\n            let calendar = type(of: self).currentCalendar\n            let minuteRange = calendar.range(of: .minute, in: .hour, for: self)!\n            // always 30...\n            let halfMinuteInHour = (minuteRange.upperBound - minuteRange.lowerBound) / 2\n            if (minute < halfMinuteInHour) {\n                return hour\n            } else {\n                let anHourLater = self.add(hour: 1)\n                return anHourLater.hour\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "NSDate-Escort/NSDate+Escort.h",
    "content": "// LICENSE : MIT\n\n#import <Foundation/Foundation.h>\n\nNS_ASSUME_NONNULL_BEGIN\n\n@interface NSDate (Escort)\n\n#pragma mark - Setting default calendar\n\n/**\n Returns the calendarIdentifier of calendars that is used by this library for date calculation.\n @see AZ_setDefaultCalendarIdentifier: for more details.\n */\n+ (NSString * _Nullable)AZ_defaultCalendarIdentifier;\n/**\n Sets the calendarIdentifier of calendars that is used by this library for date calculation.\n You can specify any calendarIdentifiers predefined by NSLocale. If you provide nil, the library uses\n [NSCalendar currentCalendar]. Default value is nil.\n \n You can't provide individual calendars for individual date objects. If you need to perform such\n complicated date calculations, you should rather create calendars on your own.\n */\n+ (void)AZ_setDefaultCalendarIdentifier:(NSString * _Nullable)calendarIdentifier;\n\n#pragma mark - Relative dates from the current date\n+ (NSDate *)dateTomorrow;\n\n+ (NSDate *)dateYesterday;\n\n+ (NSDate *)dateWithDaysFromNow:(NSInteger) dDays;\n\n+ (NSDate *)dateWithDaysBeforeNow:(NSInteger) dDays;\n\n+ (NSDate *)dateWithHoursFromNow:(NSInteger) dHours;\n\n+ (NSDate *)dateWithHoursBeforeNow:(NSInteger) dHours;\n\n+ (NSDate *)dateWithMinutesFromNow:(NSInteger) dMinutes;\n\n+ (NSDate *)dateWithMinutesBeforeNow:(NSInteger) dMinutes;\n\n#pragma mark - Comparing dates\n\n- (BOOL)isEqualToDateIgnoringTime:(NSDate *) otherDate;\n\n- (BOOL)isToday;\n\n- (BOOL)isTomorrow;\n\n- (BOOL)isYesterday;\n\n- (BOOL)isSameWeekAsDate:(NSDate *) aDate;\n\n- (BOOL)isThisWeek;\n\n- (BOOL)isNextWeek;\n\n- (BOOL)isLastWeek;\n\n- (BOOL)isSameMonthAsDate:(NSDate *) aDate;\n\n- (BOOL)isThisMonth;\n\n- (BOOL)isSameYearAsDate:(NSDate *) aDate;\n\n- (BOOL)isThisYear;\n\n- (BOOL)isNextYear;\n\n- (BOOL)isLastYear;\n\n- (BOOL)isEarlierThanDate:(NSDate *) aDate;\n\n- (BOOL)isLaterThanDate:(NSDate *) aDate;\n\n- (BOOL)isEarlierThanOrEqualDate:(NSDate *) aDate;\n\n- (BOOL)isLaterThanOrEqualDate:(NSDate *) aDate;\n\n- (BOOL)isInFuture;\n\n- (BOOL)isInPast;\n\n#pragma mark - Date roles\n\n- (BOOL)isTypicallyWorkday;\n\n- (BOOL)isTypicallyWeekend;\n\n#pragma mark - Adjusting dates\n- (NSDate *)dateByAddingYears:(NSInteger) dYears;\n\n- (NSDate *)dateBySubtractingYears:(NSInteger) dYears;\n\n- (NSDate *)dateByAddingMonths:(NSInteger) dMonths;\n\n- (NSDate *)dateBySubtractingMonths:(NSInteger) dMonths;\n\n- (NSDate *)dateByAddingDays:(NSInteger) dDays;\n\n- (NSDate *)dateBySubtractingDays:(NSInteger) dDays;\n\n- (NSDate *)dateByAddingHours:(NSInteger) dHours;\n\n- (NSDate *)dateBySubtractingHours:(NSInteger) dHours;\n\n- (NSDate *)dateByAddingMinutes:(NSInteger) dMinutes;\n\n- (NSDate *)dateBySubtractingMinutes:(NSInteger) dMinutes;\n\n- (NSDate *)dateByAddingSeconds:(NSInteger) dSeconds;\n\n- (NSDate *)dateBySubtractingSeconds:(NSInteger) dSeconds;\n\n- (NSDate *)dateAtStartOfDay;\n\n- (NSDate *)dateAtStartOfNextDay;\n\n- (NSDate *)dateAtStartOfWeek;\n\n- (NSDate *)dateAtStartOfNextWeek;\n\n- (NSDate *)dateAtStartOfMonth;\n\n- (NSDate *)dateAtStartOfNextMonth;\n\n- (NSDate *)dateAtStartOfYear;\n\n- (NSDate *)dateAtStartOfNextYear;\n\n#pragma mark - Retrieving intervals\n- (NSInteger)secondsAfterDate:(NSDate *) aDate;\n\n- (NSInteger)secondsBeforeDate:(NSDate *) aDate;\n\n- (NSInteger)minutesAfterDate:(NSDate *) aDate;\n\n- (NSInteger)minutesBeforeDate:(NSDate *) aDate;\n\n- (NSInteger)hoursAfterDate:(NSDate *) aDate;\n\n- (NSInteger)hoursBeforeDate:(NSDate *) aDate;\n\n- (NSInteger)daysAfterDate:(NSDate *) aDate;\n\n- (NSInteger)daysBeforeDate:(NSDate *) aDate;\n\n- (NSInteger)monthsAfterDate:(NSDate *) aDate;\n\n- (NSInteger)monthsBeforeDate:(NSDate *) aDate;\n\n/**\n* return distance days\n*/\n- (NSInteger)distanceInDaysToDate:(NSDate *) aDate;\n\n#pragma mark amount\n\n- (NSInteger)hoursOfDay;\n\n- (NSInteger)daysOfMonth;\n\n- (NSInteger)daysOfYear;\n\n- (NSInteger)monthsOfYear;\n\n\n#pragma mark - Decomposing dates\n/**\n* return nearest hour\n*/\n@property(readonly) NSInteger nearestHour;\n@property(readonly) NSInteger hour;\n@property(readonly) NSInteger minute;\n@property(readonly) NSInteger seconds;\n@property(readonly) NSInteger day;\n@property(readonly) NSInteger month;\n@property(readonly) NSInteger week;\n//  in the Gregorian calendar, n is 7 and Sunday is represented by 1.\n@property(readonly) NSInteger weekday;\n@property(readonly) NSInteger firstDayOfWeekday;\n@property(readonly) NSInteger lastDayOfWeekday;\n// e.g. 2nd Tuesday of the month == 2\n@property(readonly) NSInteger nthWeekday;\n@property(readonly) NSInteger year;\n@property(readonly) NSInteger gregorianYear;\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "NSDate-Escort/NSDate+Escort.m",
    "content": "#import \"NSDate+Escort.h\"\n\nNS_ASSUME_NONNULL_BEGIN\n\n@implementation NSDate (Escort)\n\nstatic NSString * AZ_DefaultCalendarIdentifier = nil;\nstatic NSLock * AZ_DefaultCalendarIdentifierLock = nil;\nstatic dispatch_once_t AZ_DefaultCalendarIdentifierLock_onceToken;\n\n#pragma mark - private\n+ (NSCalendar *)AZ_currentCalendar {\n    NSString *key = @\"AZ_currentCalendar_\";\n    NSString *calendarIdentifier = [NSDate AZ_defaultCalendarIdentifier];\n    if (calendarIdentifier) {\n        key = [key stringByAppendingString:calendarIdentifier];\n    }\n    NSMutableDictionary *dictionary = [[NSThread currentThread] threadDictionary];\n    NSCalendar *currentCalendar = [dictionary objectForKey:key];\n    if (currentCalendar == nil) {\n        if (calendarIdentifier == nil) {\n            currentCalendar = [NSCalendar currentCalendar];\n        } else {\n            currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:calendarIdentifier];\n            NSAssert(currentCalendar != nil, @\"NSDate-Escort failed to create a calendar since the provided calendarIdentifier is invalid.\");\n        }\n        [dictionary setObject:currentCalendar forKey:key];\n    }\n    currentCalendar.timeZone = [NSTimeZone localTimeZone];\n    return currentCalendar;\n}\n\n- (NSInteger)numberOfDaysInWeek {\n    return [[NSDate AZ_currentCalendar] maximumRangeOfUnit:NSCalendarUnitWeekday].length;\n}\n#pragma mark - Setting default calendar\n+ (NSString * _Nullable)AZ_defaultCalendarIdentifier {\n    dispatch_once(&AZ_DefaultCalendarIdentifierLock_onceToken, ^{\n        AZ_DefaultCalendarIdentifierLock = [[NSLock alloc] init];\n    });\n    NSString *string;\n    [AZ_DefaultCalendarIdentifierLock lock];\n    string = AZ_DefaultCalendarIdentifier;\n    [AZ_DefaultCalendarIdentifierLock unlock];\n    return string;\n}\n+ (void)AZ_setDefaultCalendarIdentifier:(NSString * _Nullable)calendarIdentifier {\n    dispatch_once(&AZ_DefaultCalendarIdentifierLock_onceToken, ^{\n        AZ_DefaultCalendarIdentifierLock = [[NSLock alloc] init];\n    });\n    [AZ_DefaultCalendarIdentifierLock lock];\n    AZ_DefaultCalendarIdentifier = calendarIdentifier;\n    [AZ_DefaultCalendarIdentifierLock unlock];\n}\n#pragma mark - Relative dates from the current date\n+ (NSDate *)dateTomorrow {\n    return [NSDate dateWithDaysFromNow:1];\n}\n\n+ (NSDate *)dateYesterday {\n    return [NSDate dateWithDaysBeforeNow:1];\n}\n\n+ (NSDate *)dateWithDaysFromNow:(NSInteger) dDays {\n    return [[NSDate date] dateByAddingDays:dDays];\n}\n\n+ (NSDate *)dateWithDaysBeforeNow:(NSInteger) dDays {\n    return [[NSDate date] dateBySubtractingDays:dDays];\n}\n\n+ (NSDate *)dateWithHoursFromNow:(NSInteger) dHours {\n    return [[NSDate date] dateByAddingHours:dHours];\n}\n\n+ (NSDate *)dateWithHoursBeforeNow:(NSInteger) dHours {\n    return [[NSDate date] dateBySubtractingHours:dHours];\n}\n\n+ (NSDate *)dateWithMinutesFromNow:(NSInteger) dMinutes {\n    return [[NSDate date] dateByAddingMinutes:dMinutes];\n}\n\n+ (NSDate *)dateWithMinutesBeforeNow:(NSInteger) dMinutes {\n    return [[NSDate date] dateBySubtractingMinutes:dMinutes];\n}\n\n#pragma mark - Comparing dates\n- (BOOL)isEqualToDateIgnoringTime:(NSDate *) otherDate {\n    NSCalendar *currentCalendar = [NSDate AZ_currentCalendar];\n    NSCalendarUnit unitFlags = NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;\n    NSDateComponents *components1 = [currentCalendar components:unitFlags fromDate:self];\n    NSDateComponents *components2 = [currentCalendar components:unitFlags fromDate:otherDate];\n    return (components1.era == components2.era) &&\n        (components1.year == components2.year) &&\n        (components1.month == components2.month) &&\n        (components1.day == components2.day);\n}\n\n- (BOOL)isToday {\n    return [self isEqualToDateIgnoringTime:[NSDate date]];\n}\n\n- (BOOL)isTomorrow {\n    return [self isEqualToDateIgnoringTime:[NSDate dateTomorrow]];\n}\n\n- (BOOL)isYesterday {\n    return [self isEqualToDateIgnoringTime:[NSDate dateYesterday]];\n}\n\n- (BOOL)isSameWeekAsDate:(NSDate *) aDate {\n    NSDateComponents *leftComponents = [[NSDate AZ_currentCalendar] components:NSCalendarUnitWeekOfYear | NSCalendarUnitYearForWeekOfYear fromDate:self];\n    NSDateComponents *rightComponents = [[NSDate AZ_currentCalendar] components:NSCalendarUnitWeekOfYear | NSCalendarUnitYearForWeekOfYear fromDate:aDate];\n    return leftComponents.weekOfYear == rightComponents.weekOfYear\n    && leftComponents.yearForWeekOfYear == rightComponents.yearForWeekOfYear;\n}\n\n- (BOOL)isThisWeek {\n    return [self isSameWeekAsDate:[NSDate date]];\n}\n\n- (BOOL)isNextWeek {\n    NSDate *nextWeek = [NSDate dateWithDaysFromNow:[self numberOfDaysInWeek]];\n    return [self isSameWeekAsDate:nextWeek];\n}\n\n- (BOOL)isLastWeek {\n    NSDate *lastWeek = [NSDate dateWithDaysBeforeNow:[self numberOfDaysInWeek]];\n    return [self isSameWeekAsDate:lastWeek];\n}\n\n- (BOOL)isSameMonthAsDate:(NSDate *) aDate {\n    NSDate *dateAtStartSelf = [[self dateAtStartOfMonth] dateAtStartOfDay];\n    NSDate *dateAtStartArgs = [[aDate dateAtStartOfMonth] dateAtStartOfDay];\n    return [dateAtStartSelf isEqualToDate:dateAtStartArgs];\n}\n\n- (BOOL)isThisMonth {\n    return [self isSameMonthAsDate:[NSDate date]];\n}\n\n- (BOOL)isSameYearAsDate:(NSDate *) aDate {\n    NSDate *dateAtStartSelf = [[self dateAtStartOfYear] dateAtStartOfDay];\n    NSDate *dateAtStartArgs = [[aDate dateAtStartOfYear] dateAtStartOfDay];\n    return [dateAtStartSelf isEqualToDate:dateAtStartArgs];\n}\n\n- (BOOL)isThisYear {\n    return [self isSameYearAsDate:[NSDate date]];\n}\n\n- (BOOL)isNextYear {\n    NSDate *nextYear = [[NSDate date] dateByAddingYears:1];\n    return [self isSameYearAsDate:nextYear];\n}\n\n- (BOOL)isLastYear {\n    NSDate *lastYear = [[NSDate date] dateBySubtractingYears:1];\n    return [self isSameYearAsDate:lastYear];\n}\n\n- (BOOL)isEarlierThanDate:(NSDate *) aDate {\n    return ([self compare:aDate] == NSOrderedAscending);\n}\n\n- (BOOL)isLaterThanDate:(NSDate *) aDate {\n    return ([self compare:aDate] == NSOrderedDescending);\n}\n\n- (BOOL)isEarlierThanOrEqualDate:(NSDate *) aDate {\n    NSComparisonResult comparisonResult = [self compare:aDate];\n    return (comparisonResult == NSOrderedAscending) || (comparisonResult == NSOrderedSame);\n}\n\n- (BOOL)isLaterThanOrEqualDate:(NSDate *) aDate {\n    NSComparisonResult comparisonResult = [self compare:aDate];\n    return (comparisonResult == NSOrderedDescending) || (comparisonResult == NSOrderedSame);\n}\n\n- (BOOL)isInPast {\n    return [self isEarlierThanDate:[NSDate date]];\n}\n\n- (BOOL)isInFuture {\n    return [self isLaterThanDate:[NSDate date]];\n}\n\n\n#pragma mark - Date roles\n// https://github.com/erica/NSDate-Extensions/issues/12\n- (BOOL)isTypicallyWorkday {\n    return ([self isTypicallyWeekend] == NO);\n}\n\n- (BOOL)isTypicallyWeekend {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSRange weekdayRange = [calendar maximumRangeOfUnit:NSCalendarUnitWeekday];\n    NSDateComponents *components = [calendar components:NSCalendarUnitWeekday fromDate:self];\n    NSInteger weekdayOfDate = [components weekday];\n    return (weekdayOfDate == weekdayRange.location || weekdayOfDate == weekdayRange.location + weekdayRange.length - 1);\n}\n\n#pragma mark - Adjusting dates\n- (NSDate *)dateByAddingYears:(NSInteger) dYears {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.year = dYears;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingYears:(NSInteger) dYears {\n    return [self dateByAddingYears:-dYears];\n}\n\n- (NSDate *)dateByAddingMonths:(NSInteger) dMonths {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.month = dMonths;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingMonths:(NSInteger) dMonths {\n    return [self dateByAddingMonths:-dMonths];\n}\n\n- (NSDate *)dateByAddingDays:(NSInteger) dDays {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.day = dDays;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingDays:(NSInteger) dDays {\n    return [self dateByAddingDays:-dDays];\n}\n\n- (NSDate *)dateByAddingHours:(NSInteger) dHours {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.hour = dHours;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingHours:(NSInteger) dHours {\n    return [self dateByAddingHours:-dHours];\n}\n\n- (NSDate *)dateByAddingMinutes:(NSInteger) dMinutes {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.minute = dMinutes;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingMinutes:(NSInteger) dMinutes {\n    return [self dateByAddingMinutes:-dMinutes];\n}\n\n- (NSDate *)dateByAddingSeconds:(NSInteger) dSeconds {\n    NSDateComponents *components = [[NSDateComponents alloc] init];\n    components.second = dSeconds;\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    return [calendar dateByAddingComponents:components toDate:self options:0];\n}\n\n- (NSDate *)dateBySubtractingSeconds:(NSInteger) dSeconds {\n    return [self dateByAddingSeconds:-dSeconds];\n}\n\n- (NSDate *)dateAtStartOfDay {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    components.hour = 0;\n    components.minute = 0;\n    components.second = 0;\n    components.timeZone = calendar.timeZone;\n    return [calendar dateFromComponents:components];\n}\n\n- (NSDate *)dateAtStartOfNextDay {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    components.day += 1;\n    components.hour = 0;\n    components.minute = 0;\n    components.second = 0;\n    components.timeZone = calendar.timeZone;\n    return [calendar dateFromComponents:components];\n}\n\n- (NSDate *)dateAtStartOfWeek\n{\n    NSDate *startOfWeek = nil;\n    [[NSDate AZ_currentCalendar] rangeOfUnit:NSCalendarUnitWeekOfMonth startDate:&startOfWeek interval:NULL forDate:self];\n    return startOfWeek;\n}\n\n- (NSDate *)dateAtStartOfNextWeek {\n    NSDate *startOfWeek = nil;\n    NSTimeInterval interval = 0;\n    [[NSDate AZ_currentCalendar] rangeOfUnit:NSCalendarUnitWeekOfMonth startDate:&startOfWeek interval:&interval forDate:self];\n    return [startOfWeek dateByAddingTimeInterval:interval];\n}\n\n- (NSDate *)dateAtStartOfMonth {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self];\n    components.day = range.location;\n    return [calendar dateFromComponents:components];\n}\n\n- (NSDate *)dateAtStartOfNextMonth {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self];\n    components.month += 1;\n    components.day = range.location;\n    return [calendar dateFromComponents:components];\n}\n\n- (NSDate *)dateAtStartOfYear {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    NSRange monthRange = [calendar rangeOfUnit:NSCalendarUnitMonth inUnit:NSCalendarUnitYear forDate:self];\n    NSRange dayRange = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self];\n    components.day = dayRange.location;\n    components.month = monthRange.location;\n    NSDate *startOfYear = [calendar dateFromComponents:components];\n    return startOfYear;\n}\n\n- (NSDate *)dateAtStartOfNextYear {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *components = [calendar components:NSCalendarUnitEra | NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond fromDate:self];\n    NSRange monthRange = [calendar rangeOfUnit:NSCalendarUnitMonth inUnit:NSCalendarUnitYear forDate:self];\n    NSRange dayRange = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self];\n    components.year += 1;\n    components.day = dayRange.location;\n    components.month = monthRange.location;\n    NSDate *startOfYear = [calendar dateFromComponents:components];\n    return startOfYear;\n}\n\n\n#pragma mark - Retrieving intervals\n- (NSInteger)secondsAfterDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitSecond fromDate:aDate toDate:self options:0];\n    return [components second];\n}\n\n- (NSInteger)secondsBeforeDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitSecond fromDate:self toDate:aDate options:0];\n    return [components second];\n}\n\n- (NSInteger)minutesAfterDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMinute fromDate:aDate toDate:self options:0];\n    return [components minute];\n}\n\n- (NSInteger)minutesBeforeDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMinute fromDate:self toDate:aDate options:0];\n    return [components minute];\n}\n\n- (NSInteger)hoursAfterDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitHour fromDate:aDate toDate:self options:0];\n    return [components hour];\n}\n\n- (NSInteger)hoursBeforeDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitHour fromDate:self toDate:aDate options:0];\n    return [components hour];\n}\n\n- (NSInteger)daysAfterDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitDay fromDate:aDate toDate:self options:0];\n    return [components day];\n}\n\n- (NSInteger)daysBeforeDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitDay fromDate:self toDate:aDate options:0];\n    return [components day];\n}\n\n- (NSInteger)monthsAfterDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMonth fromDate:aDate toDate:self options:0];\n    return [components month];\n}\n\n- (NSInteger)monthsBeforeDate:(NSDate *) aDate {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMonth fromDate:self toDate:aDate options:0];\n    return [components month];\n}\n\n- (NSTimeInterval)timeIntervalIgnoringDay:(NSDate *) aDate {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSCalendarUnit unitFlags = NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;\n    NSDateComponents *components = [calendar components:unitFlags fromDate:aDate];\n    NSDateComponents *components1 = [calendar components:unitFlags fromDate:self];\n    return [[calendar dateFromComponents:components] timeIntervalSinceDate:[calendar dateFromComponents:components1]];\n}\n\n- (NSInteger)distanceInDaysToDate:(NSDate *) aDate {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDateComponents *dateComponents = [calendar\n        components:NSCalendarUnitDay fromDate:self toDate:aDate options:0];\n    return [dateComponents day];\n}\n\n#pragma amount\n\n- (NSInteger)hoursOfDay {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSRange range = [calendar rangeOfUnit:NSCalendarUnitHour inUnit:NSCalendarUnitDay forDate:self];\n    return range.length;\n}\n\n- (NSInteger)daysOfMonth {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSRange range = [calendar rangeOfUnit:NSCalendarUnitDay inUnit:NSCalendarUnitMonth forDate:self];\n    return range.length;\n}\n\n- (NSInteger)daysOfYear {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSDate *startOfYear;\n    NSTimeInterval lengthOfYear;\n    [calendar rangeOfUnit:NSCalendarUnitYear startDate:&startOfYear interval:&lengthOfYear forDate:self];\n    \n    NSDate *endOfYear = [startOfYear dateByAddingTimeInterval:lengthOfYear];\n    return [startOfYear daysBeforeDate:endOfYear];\n}\n\n- (NSInteger)monthsOfYear {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSRange range = [calendar rangeOfUnit:NSCalendarUnitMonth inUnit:NSCalendarUnitYear forDate:self];\n    return range.length;\n}\n\n#pragma mark - Decomposing dates\n// NSDate-Utilities API is broken?\n- (NSInteger)nearestHour {\n    NSCalendar *calendar = [NSDate AZ_currentCalendar];\n    NSRange minuteRange = [calendar rangeOfUnit:NSCalendarUnitMinute inUnit:NSCalendarUnitHour forDate:self];\n    // always 30...\n    NSInteger halfMinuteInHour = minuteRange.length / 2;\n    NSInteger currentMinute = self.minute;\n    if (currentMinute < halfMinuteInHour) {\n        return self.hour;\n    } else {\n        NSDate *anHourLater = [self dateByAddingHours:1];\n        return [anHourLater hour];\n    }\n}\n\n- (NSInteger)hour {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitHour fromDate:self];\n    return [components hour];\n}\n\n- (NSInteger)minute {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMinute fromDate:self];\n    return [components minute];\n}\n\n- (NSInteger)seconds {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitSecond fromDate:self];\n    return [components second];\n}\n\n- (NSInteger)day {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitDay fromDate:self];\n    return [components day];\n}\n\n- (NSInteger)month {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitMonth fromDate:self];\n    return [components month];\n}\n\n- (NSInteger)week {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitWeekOfMonth fromDate:self];\n    return [components weekOfMonth];\n}\n\n- (NSInteger)weekday {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitWeekday fromDate:self];\n    return [components weekday];\n}\n\n// http://stackoverflow.com/questions/11681815/current-week-start-and-end-date\n- (NSInteger)firstDayOfWeekday {\n    NSDate *startOfTheWeek;\n    NSTimeInterval interval;\n    [[NSDate AZ_currentCalendar] rangeOfUnit:NSCalendarUnitWeekOfMonth\n                                 startDate:&startOfTheWeek\n                                 interval:&interval\n                                 forDate:self];\n    return [startOfTheWeek day];\n}\n\n- (NSInteger)lastDayOfWeekday {\n    return [self firstDayOfWeekday] + ([self numberOfDaysInWeek] - 1);\n}\n\n- (NSInteger)nthWeekday {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitWeekdayOrdinal fromDate:self];\n    return [components weekdayOrdinal];\n}\n\n- (NSInteger)year {\n    NSDateComponents *components = [[NSDate AZ_currentCalendar] components:NSCalendarUnitYear fromDate:self];\n    return [components year];\n}\n- (NSInteger)gregorianYear {\n    NSCalendar *currentCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n    NSDateComponents *components = [currentCalendar components:NSCalendarUnitEra | NSCalendarUnitYear fromDate:self];\n    return [components year];\n}\n\n@end\n\nNS_ASSUME_NONNULL_END\n"
  },
  {
    "path": "NSDate-Escort.podspec",
    "content": "\nPod::Spec.new do |s|\n  s.name         = \"NSDate-Escort\"\n  s.version      = \"2.1.1\"\n  s.summary      = \"A NSDate utility library that is compatible with NSDate-Extensions API.\"\n  s.homepage     = \"https://github.com/azu/NSDate-Escort\"\n  s.license      = { :type => 'MIT', :file => 'LICENSE' }\n  s.author       = { \"azu\" => \"azuciao@gmail.com\" }\n  s.source       = {\n    :git => \"https://github.com/azu/NSDate-Escort.git\",\n    :tag => s.version.to_s\n  }\n  s.requires_arc = true\n\n  s.swift_version = '5.0'\n  s.ios.deployment_target  = '11.4'\n  s.osx.deployment_target  = '10.14'\n\n  s.default_subspec = 'ObjC'\n\n  s.subspec 'ObjC' do |a|\n    a.source_files = 'NSDate-Escort/**/*.{h,m}'\n  end\n  s.subspec 'Swift' do |a|\n    a.source_files = 'NSDate-Escort/**/*.{swift}'\n  end\nend\n"
  },
  {
    "path": "NSDate-Escort.xcodeproj/project.pbxproj",
    "content": "// !$*UTF8*$!\n{\n\tarchiveVersion = 1;\n\tclasses = {\n\t};\n\tobjectVersion = 46;\n\tobjects = {\n\n/* Begin PBXBuildFile section */\n\t\t17B5C28A17FECDD022B846E6 /* NSDate+Escort.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C5CD74BE7F1C57C3F0DB /* NSDate+Escort.m */; };\n\t\t17B5C474F10F4D9620AFFACC /* FakeDateUtil.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5CF001E83A221023FE180 /* FakeDateUtil.m */; };\n\t\t17B5C584E29A91E50FA691ED /* EscortComparingSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C809EA2391FF7D79ECD6 /* EscortComparingSpec.m */; };\n\t\t17B5C94FD65CD923332ED3EE /* EscortCacheSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5CC3FA3B3583B8AC95DD8 /* EscortCacheSpec.m */; };\n\t\t17B5C9F98AC409F47299D54B /* EscortDecomposingSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5CA6E7413A743441E0EF2 /* EscortDecomposingSpec.m */; };\n\t\t17B5CB0E0DEEAA0B86DB6754 /* EscortClassSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5CF5E44E63D16B9757F5F /* EscortClassSpec.m */; };\n\t\t17B5CCF9CEC128B380974AF7 /* EscortAdjustingDatesSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C79FDE62EDC8C21A9FFC /* EscortAdjustingDatesSpec.m */; };\n\t\t17B5CD2E9AD0EF4A499B5DC2 /* EscortRetrievingIntervalsSpec.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C3CB2F1D7F92A7D5D185 /* EscortRetrievingIntervalsSpec.m */; };\n\t\t17B5CEF22C864A71F222AF9B /* EscortDateRoles.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C01AAD723EBDDDCC62A1 /* EscortDateRoles.m */; };\n\t\t73FCA17718DE837D009ED4AD /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 73FCA17518DE837D009ED4AD /* InfoPlist.strings */; };\n\t\tB8D01A3E899B060C25CC4398 /* libPods-Test.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8BFDB70869B017E5594994DF /* libPods-Test.a */; };\n\t\tBE0BE9A01E9B221000D736C7 /* NSDate-Escort.h in Headers */ = {isa = PBXBuildFile; fileRef = BE0BE99E1E9B221000D736C7 /* NSDate-Escort.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tBE0BE9A41E9B221D00D736C7 /* NSDate+Escort.m in Sources */ = {isa = PBXBuildFile; fileRef = 17B5C5CD74BE7F1C57C3F0DB /* NSDate+Escort.m */; };\n\t\tBE0BE9AE1E9B238F00D736C7 /* NSDate_Escort_iOS.h in Headers */ = {isa = PBXBuildFile; fileRef = BE0BE9AC1E9B238F00D736C7 /* NSDate_Escort_iOS.h */; settings = {ATTRIBUTES = (Public, ); }; };\n\t\tBE10D2C020FCC68300B616FA /* EscortComparingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE10D2BF20FCC68300B616FA /* EscortComparingSpec.swift */; };\n\t\tBE10D2C220FCC68300B616FA /* NSDate_Escort_Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BE0BE99C1E9B221000D736C7 /* NSDate_Escort_Cocoa.framework */; };\n\t\tBE10D2C820FCC68B00B616FA /* Date+Escort.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE10D2B720FCC65600B616FA /* Date+Escort.swift */; };\n\t\tBE10D2CA21020B8500B616FA /* EscortDecomposingSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE10D2C921020B8500B616FA /* EscortDecomposingSpec.swift */; };\n\t\tBE10D2CC2103125F00B616FA /* EscortExtractSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE10D2CB2103125F00B616FA /* EscortExtractSpec.swift */; };\n\t\tBE1650DB210D994300868737 /* EscortDateRoles.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1650DA210D994300868737 /* EscortDateRoles.swift */; };\n\t\tBE1650DD210DAC5700868737 /* EscortClassSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1650DC210DAC5700868737 /* EscortClassSpec.swift */; };\n\t\tBE1650DF212037FD00868737 /* EscortAdjustingDatesSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1650DE212037FD00868737 /* EscortAdjustingDatesSpec.swift */; };\n\t\tBE1650E12121340B00868737 /* EscortRetrievingIntervalsSpec.swift in Sources */ = {isa = PBXBuildFile; fileRef = BE1650E02121340B00868737 /* EscortRetrievingIntervalsSpec.swift */; };\n\t\tBE5B7B151BBFB0AD005732C2 /* BenchMakeFormReferenceDate.m in Sources */ = {isa = PBXBuildFile; fileRef = BE5B7B131BBFB0AD005732C2 /* BenchMakeFormReferenceDate.m */; };\n\t\tBEAD6D3E1EB337AA004A4A3B /* EscortAmountOfSpecs.m in Sources */ = {isa = PBXBuildFile; fileRef = BEAD6D3D1EB337AA004A4A3B /* EscortAmountOfSpecs.m */; };\n\t\tC5BD6A3A196287E30053103A /* AZNSDateKiwiMatcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C5BD6A38196287E30053103A /* AZNSDateKiwiMatcher.m */; };\n\t\tD61E21D1C84D29A4E5422F51 /* libPods-SwiftTest.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 7B01BA43AF189F3F78DC164D /* libPods-SwiftTest.a */; };\n/* End PBXBuildFile section */\n\n/* Begin PBXContainerItemProxy section */\n\t\tBE10D2C320FCC68300B616FA /* PBXContainerItemProxy */ = {\n\t\t\tisa = PBXContainerItemProxy;\n\t\t\tcontainerPortal = 7355ABD317638E8900DD1EC2 /* Project object */;\n\t\t\tproxyType = 1;\n\t\t\tremoteGlobalIDString = BE0BE99B1E9B221000D736C7;\n\t\t\tremoteInfo = NSDate_Escort_Cocoa;\n\t\t};\n/* End PBXContainerItemProxy section */\n\n/* Begin PBXFileReference section */\n\t\t17B5C01AAD723EBDDDCC62A1 /* EscortDateRoles.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortDateRoles.m; sourceTree = \"<group>\"; };\n\t\t17B5C2FFCAB36B1E0C17E2BF /* readme.md */ = {isa = PBXFileReference; lastKnownFileType = file.md; path = readme.md; sourceTree = \"<group>\"; };\n\t\t17B5C3CB2F1D7F92A7D5D185 /* EscortRetrievingIntervalsSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortRetrievingIntervalsSpec.m; sourceTree = \"<group>\"; };\n\t\t17B5C5CD74BE7F1C57C3F0DB /* NSDate+Escort.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = \"NSDate+Escort.m\"; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };\n\t\t17B5C69FBFA4113BF4F99F02 /* FakeDateUtil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FakeDateUtil.h; sourceTree = \"<group>\"; };\n\t\t17B5C79FDE62EDC8C21A9FFC /* EscortAdjustingDatesSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = EscortAdjustingDatesSpec.m; sourceTree = \"<group>\"; xcLanguageSpecificationIdentifier = xcode.lang.objc; };\n\t\t17B5C8039CF17DE12A52A9B3 /* NSDate+Escort.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = \"NSDate+Escort.h\"; sourceTree = \"<group>\"; };\n\t\t17B5C809EA2391FF7D79ECD6 /* EscortComparingSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortComparingSpec.m; sourceTree = \"<group>\"; };\n\t\t17B5CA6E7413A743441E0EF2 /* EscortDecomposingSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortDecomposingSpec.m; sourceTree = \"<group>\"; };\n\t\t17B5CC3FA3B3583B8AC95DD8 /* EscortCacheSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortCacheSpec.m; sourceTree = \"<group>\"; };\n\t\t17B5CF001E83A221023FE180 /* FakeDateUtil.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FakeDateUtil.m; sourceTree = \"<group>\"; };\n\t\t17B5CF5E44E63D16B9757F5F /* EscortClassSpec.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortClassSpec.m; sourceTree = \"<group>\"; };\n\t\t5DBBC214A3239FD7DB605EF7 /* Pods-Test.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-Test.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-Test/Pods-Test.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t6DD8C2208BC805D0B99E5503 /* Pods-Test.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-Test.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-Test/Pods-Test.debug.xcconfig\"; sourceTree = \"<group>\"; };\n\t\t73FCA16E18DE837D009ED4AD /* Test.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Test.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t73FCA17418DE837D009ED4AD /* Test-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = \"Test-Info.plist\"; sourceTree = \"<group>\"; };\n\t\t73FCA17618DE837D009ED4AD /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = \"<group>\"; };\n\t\t73FCA17A18DE837D009ED4AD /* Test-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = \"Test-Prefix.pch\"; sourceTree = \"<group>\"; };\n\t\t7B01BA43AF189F3F78DC164D /* libPods-SwiftTest.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-SwiftTest.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\t8BFDB70869B017E5594994DF /* libPods-Test.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = \"libPods-Test.a\"; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE0BE99C1E9B221000D736C7 /* NSDate_Escort_Cocoa.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NSDate_Escort_Cocoa.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE0BE99E1E9B221000D736C7 /* NSDate-Escort.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = \"NSDate-Escort.h\"; path = \"../NSDate-Escort_Cocoa/NSDate-Escort.h\"; sourceTree = \"<group>\"; };\n\t\tBE0BE99F1E9B221000D736C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = Info.plist; path = \"../NSDate-Escort_Cocoa/Info.plist\"; sourceTree = \"<group>\"; };\n\t\tBE0BE9AA1E9B238F00D736C7 /* NSDate_Escort_iOS.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = NSDate_Escort_iOS.framework; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE0BE9AC1E9B238F00D736C7 /* NSDate_Escort_iOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSDate_Escort_iOS.h; sourceTree = \"<group>\"; };\n\t\tBE0BE9AD1E9B238F00D736C7 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tBE10D2B720FCC65600B616FA /* Date+Escort.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = \"Date+Escort.swift\"; sourceTree = \"<group>\"; };\n\t\tBE10D2BD20FCC68200B616FA /* SwiftTest.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftTest.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE10D2BF20FCC68300B616FA /* EscortComparingSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortComparingSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE10D2C120FCC68300B616FA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tBE10D2C921020B8500B616FA /* EscortDecomposingSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortDecomposingSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE10D2CB2103125F00B616FA /* EscortExtractSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortExtractSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE1650DA210D994300868737 /* EscortDateRoles.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortDateRoles.swift; sourceTree = \"<group>\"; };\n\t\tBE1650DC210DAC5700868737 /* EscortClassSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortClassSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE1650DE212037FD00868737 /* EscortAdjustingDatesSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortAdjustingDatesSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE1650E02121340B00868737 /* EscortRetrievingIntervalsSpec.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EscortRetrievingIntervalsSpec.swift; sourceTree = \"<group>\"; };\n\t\tBE5B7B0B1BBFB048005732C2 /* Benchmark.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = Benchmark.xctest; sourceTree = BUILT_PRODUCTS_DIR; };\n\t\tBE5B7B0F1BBFB048005732C2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = \"<group>\"; };\n\t\tBE5B7B131BBFB0AD005732C2 /* BenchMakeFormReferenceDate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BenchMakeFormReferenceDate.m; sourceTree = \"<group>\"; };\n\t\tBEAD6D3D1EB337AA004A4A3B /* EscortAmountOfSpecs.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EscortAmountOfSpecs.m; sourceTree = \"<group>\"; };\n\t\tC5BD6A37196287E30053103A /* AZNSDateKiwiMatcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AZNSDateKiwiMatcher.h; sourceTree = \"<group>\"; };\n\t\tC5BD6A38196287E30053103A /* AZNSDateKiwiMatcher.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AZNSDateKiwiMatcher.m; sourceTree = \"<group>\"; };\n\t\tCF296903783DAA88609CE74A /* Pods-SwiftTest.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-SwiftTest.release.xcconfig\"; path = \"Pods/Target Support Files/Pods-SwiftTest/Pods-SwiftTest.release.xcconfig\"; sourceTree = \"<group>\"; };\n\t\tE747142ADB2B90EBAEE2595E /* Pods-SwiftTest.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = \"Pods-SwiftTest.debug.xcconfig\"; path = \"Pods/Target Support Files/Pods-SwiftTest/Pods-SwiftTest.debug.xcconfig\"; sourceTree = \"<group>\"; };\n/* End PBXFileReference section */\n\n/* Begin PBXFrameworksBuildPhase section */\n\t\t73FCA16B18DE837D009ED4AD /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tB8D01A3E899B060C25CC4398 /* libPods-Test.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9981E9B221000D736C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9A61E9B238F00D736C7 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE10D2BA20FCC68200B616FA /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE10D2C220FCC68300B616FA /* NSDate_Escort_Cocoa.framework in Frameworks */,\n\t\t\t\tD61E21D1C84D29A4E5422F51 /* libPods-SwiftTest.a in Frameworks */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE5B7B081BBFB048005732C2 /* Frameworks */ = {\n\t\t\tisa = PBXFrameworksBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXFrameworksBuildPhase section */\n\n/* Begin PBXGroup section */\n\t\t17B5C141C52FB324DABC53BC /* FakeDateUtil */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t17B5CF001E83A221023FE180 /* FakeDateUtil.m */,\n\t\t\t\t17B5C69FBFA4113BF4F99F02 /* FakeDateUtil.h */,\n\t\t\t);\n\t\t\tpath = FakeDateUtil;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t17B5C4F653B336A415A1AD4C /* NSDate-Escort */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t17B5C8039CF17DE12A52A9B3 /* NSDate+Escort.h */,\n\t\t\t\t17B5C5CD74BE7F1C57C3F0DB /* NSDate+Escort.m */,\n\t\t\t\tBE10D2B720FCC65600B616FA /* Date+Escort.swift */,\n\t\t\t);\n\t\t\tpath = \"NSDate-Escort\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t17B5CC2CE306C225BB3E62CC /* Lib */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t17B5C141C52FB324DABC53BC /* FakeDateUtil */,\n\t\t\t);\n\t\t\tpath = Lib;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7355ABD217638E8900DD1EC2 = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t73FCA17218DE837D009ED4AD /* Test */,\n\t\t\t\tBE5B7B0C1BBFB048005732C2 /* Benchmark */,\n\t\t\t\tBE0BE99D1E9B221000D736C7 /* NSDate-Escort_Cocoa */,\n\t\t\t\tBE0BE9AB1E9B238F00D736C7 /* NSDate_Escort_iOS */,\n\t\t\t\tBE10D2BE20FCC68300B616FA /* SwiftTest */,\n\t\t\t\t7355ABE017638E9600DD1EC2 /* Frameworks */,\n\t\t\t\t7355ABDF17638E9600DD1EC2 /* Products */,\n\t\t\t\t17B5C4F653B336A415A1AD4C /* NSDate-Escort */,\n\t\t\t\t17B5C2FFCAB36B1E0C17E2BF /* readme.md */,\n\t\t\t\tE3F719C54382129B7C172924 /* Pods */,\n\t\t\t);\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7355ABDF17638E9600DD1EC2 /* Products */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t73FCA16E18DE837D009ED4AD /* Test.xctest */,\n\t\t\t\tBE5B7B0B1BBFB048005732C2 /* Benchmark.xctest */,\n\t\t\t\tBE0BE99C1E9B221000D736C7 /* NSDate_Escort_Cocoa.framework */,\n\t\t\t\tBE0BE9AA1E9B238F00D736C7 /* NSDate_Escort_iOS.framework */,\n\t\t\t\tBE10D2BD20FCC68200B616FA /* SwiftTest.xctest */,\n\t\t\t);\n\t\t\tname = Products;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t7355ABE017638E9600DD1EC2 /* Frameworks */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t8BFDB70869B017E5594994DF /* libPods-Test.a */,\n\t\t\t\t7B01BA43AF189F3F78DC164D /* libPods-SwiftTest.a */,\n\t\t\t);\n\t\t\tname = Frameworks;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t73FCA17218DE837D009ED4AD /* Test */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t17B5CC2CE306C225BB3E62CC /* Lib */,\n\t\t\t\tC5BD6A34196287E30053103A /* Matcher */,\n\t\t\t\t73FCA17318DE837D009ED4AD /* Supporting Files */,\n\t\t\t\t17B5CA6E7413A743441E0EF2 /* EscortDecomposingSpec.m */,\n\t\t\t\t17B5CC3FA3B3583B8AC95DD8 /* EscortCacheSpec.m */,\n\t\t\t\t17B5C01AAD723EBDDDCC62A1 /* EscortDateRoles.m */,\n\t\t\t\t17B5C809EA2391FF7D79ECD6 /* EscortComparingSpec.m */,\n\t\t\t\t17B5CF5E44E63D16B9757F5F /* EscortClassSpec.m */,\n\t\t\t\t17B5C79FDE62EDC8C21A9FFC /* EscortAdjustingDatesSpec.m */,\n\t\t\t\t17B5C3CB2F1D7F92A7D5D185 /* EscortRetrievingIntervalsSpec.m */,\n\t\t\t\tBEAD6D3D1EB337AA004A4A3B /* EscortAmountOfSpecs.m */,\n\t\t\t);\n\t\t\tpath = Test;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\t73FCA17318DE837D009ED4AD /* Supporting Files */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t73FCA17418DE837D009ED4AD /* Test-Info.plist */,\n\t\t\t\t73FCA17518DE837D009ED4AD /* InfoPlist.strings */,\n\t\t\t\t73FCA17A18DE837D009ED4AD /* Test-Prefix.pch */,\n\t\t\t);\n\t\t\tname = \"Supporting Files\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE0BE99D1E9B221000D736C7 /* NSDate-Escort_Cocoa */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE0BE99E1E9B221000D736C7 /* NSDate-Escort.h */,\n\t\t\t\tBE0BE99F1E9B221000D736C7 /* Info.plist */,\n\t\t\t);\n\t\t\tname = \"NSDate-Escort_Cocoa\";\n\t\t\tpath = \"NSDate-Escort\";\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE0BE9AB1E9B238F00D736C7 /* NSDate_Escort_iOS */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE0BE9AC1E9B238F00D736C7 /* NSDate_Escort_iOS.h */,\n\t\t\t\tBE0BE9AD1E9B238F00D736C7 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = NSDate_Escort_iOS;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE10D2BE20FCC68300B616FA /* SwiftTest */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE1650DE212037FD00868737 /* EscortAdjustingDatesSpec.swift */,\n\t\t\t\tBE1650DC210DAC5700868737 /* EscortClassSpec.swift */,\n\t\t\t\tBE10D2BF20FCC68300B616FA /* EscortComparingSpec.swift */,\n\t\t\t\tBE1650DA210D994300868737 /* EscortDateRoles.swift */,\n\t\t\t\tBE10D2C921020B8500B616FA /* EscortDecomposingSpec.swift */,\n\t\t\t\tBE10D2CB2103125F00B616FA /* EscortExtractSpec.swift */,\n\t\t\t\tBE1650E02121340B00868737 /* EscortRetrievingIntervalsSpec.swift */,\n\t\t\t\tBE10D2C120FCC68300B616FA /* Info.plist */,\n\t\t\t);\n\t\t\tpath = SwiftTest;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tBE5B7B0C1BBFB048005732C2 /* Benchmark */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tBE5B7B131BBFB0AD005732C2 /* BenchMakeFormReferenceDate.m */,\n\t\t\t\tBE5B7B0F1BBFB048005732C2 /* Info.plist */,\n\t\t\t);\n\t\t\tpath = Benchmark;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tC5BD6A34196287E30053103A /* Matcher */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\tC5BD6A37196287E30053103A /* AZNSDateKiwiMatcher.h */,\n\t\t\t\tC5BD6A38196287E30053103A /* AZNSDateKiwiMatcher.m */,\n\t\t\t);\n\t\t\tpath = Matcher;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n\t\tE3F719C54382129B7C172924 /* Pods */ = {\n\t\t\tisa = PBXGroup;\n\t\t\tchildren = (\n\t\t\t\t6DD8C2208BC805D0B99E5503 /* Pods-Test.debug.xcconfig */,\n\t\t\t\t5DBBC214A3239FD7DB605EF7 /* Pods-Test.release.xcconfig */,\n\t\t\t\tE747142ADB2B90EBAEE2595E /* Pods-SwiftTest.debug.xcconfig */,\n\t\t\t\tCF296903783DAA88609CE74A /* Pods-SwiftTest.release.xcconfig */,\n\t\t\t);\n\t\t\tname = Pods;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXGroup section */\n\n/* Begin PBXHeadersBuildPhase section */\n\t\tBE0BE9991E9B221000D736C7 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE0BE9A01E9B221000D736C7 /* NSDate-Escort.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9A71E9B238F00D736C7 /* Headers */ = {\n\t\t\tisa = PBXHeadersBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE0BE9AE1E9B238F00D736C7 /* NSDate_Escort_iOS.h in Headers */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXHeadersBuildPhase section */\n\n/* Begin PBXNativeTarget section */\n\t\t73FCA16D18DE837D009ED4AD /* Test */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = 73FCA17D18DE837D009ED4AD /* Build configuration list for PBXNativeTarget \"Test\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tE37CDD676E2886EF4585F0C5 /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tE4401CC6F9B84993A398AD96 /* Check Pods Manifest.lock */,\n\t\t\t\t73FCA16A18DE837D009ED4AD /* Sources */,\n\t\t\t\t73FCA16B18DE837D009ED4AD /* Frameworks */,\n\t\t\t\t73FCA16C18DE837D009ED4AD /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Test;\n\t\t\tproductName = Test;\n\t\t\tproductReference = 73FCA16E18DE837D009ED4AD /* Test.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tBE0BE99B1E9B221000D736C7 /* NSDate_Escort_Cocoa */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE0BE9A31E9B221000D736C7 /* Build configuration list for PBXNativeTarget \"NSDate_Escort_Cocoa\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tBE0BE9971E9B221000D736C7 /* Sources */,\n\t\t\t\tBE0BE9981E9B221000D736C7 /* Frameworks */,\n\t\t\t\tBE0BE9991E9B221000D736C7 /* Headers */,\n\t\t\t\tBE0BE99A1E9B221000D736C7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = NSDate_Escort_Cocoa;\n\t\t\tproductName = \"NSDate-Escort\";\n\t\t\tproductReference = BE0BE99C1E9B221000D736C7 /* NSDate_Escort_Cocoa.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tBE0BE9A91E9B238F00D736C7 /* NSDate_Escort_iOS */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE0BE9B11E9B238F00D736C7 /* Build configuration list for PBXNativeTarget \"NSDate_Escort_iOS\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tBE0BE9A51E9B238F00D736C7 /* Sources */,\n\t\t\t\tBE0BE9A61E9B238F00D736C7 /* Frameworks */,\n\t\t\t\tBE0BE9A71E9B238F00D736C7 /* Headers */,\n\t\t\t\tBE0BE9A81E9B238F00D736C7 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = NSDate_Escort_iOS;\n\t\t\tproductName = NSDate_Escort_iOS;\n\t\t\tproductReference = BE0BE9AA1E9B238F00D736C7 /* NSDate_Escort_iOS.framework */;\n\t\t\tproductType = \"com.apple.product-type.framework\";\n\t\t};\n\t\tBE10D2BC20FCC68200B616FA /* SwiftTest */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE10D2C520FCC68300B616FA /* Build configuration list for PBXNativeTarget \"SwiftTest\" */;\n\t\t\tbuildPhases = (\n\t\t\t\t9078C6BD826678D6E826CCBC /* [CP] Check Pods Manifest.lock */,\n\t\t\t\tBE10D2B920FCC68200B616FA /* Sources */,\n\t\t\t\tBE10D2BA20FCC68200B616FA /* Frameworks */,\n\t\t\t\tBE10D2BB20FCC68200B616FA /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t\tBE10D2C420FCC68300B616FA /* PBXTargetDependency */,\n\t\t\t);\n\t\t\tname = SwiftTest;\n\t\t\tproductName = SwiftTest;\n\t\t\tproductReference = BE10D2BD20FCC68200B616FA /* SwiftTest.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n\t\tBE5B7B0A1BBFB048005732C2 /* Benchmark */ = {\n\t\t\tisa = PBXNativeTarget;\n\t\t\tbuildConfigurationList = BE5B7B101BBFB048005732C2 /* Build configuration list for PBXNativeTarget \"Benchmark\" */;\n\t\t\tbuildPhases = (\n\t\t\t\tBE5B7B071BBFB048005732C2 /* Sources */,\n\t\t\t\tBE5B7B081BBFB048005732C2 /* Frameworks */,\n\t\t\t\tBE5B7B091BBFB048005732C2 /* Resources */,\n\t\t\t);\n\t\t\tbuildRules = (\n\t\t\t);\n\t\t\tdependencies = (\n\t\t\t);\n\t\t\tname = Benchmark;\n\t\t\tproductName = Benchmark;\n\t\t\tproductReference = BE5B7B0B1BBFB048005732C2 /* Benchmark.xctest */;\n\t\t\tproductType = \"com.apple.product-type.bundle.unit-test\";\n\t\t};\n/* End PBXNativeTarget section */\n\n/* Begin PBXProject section */\n\t\t7355ABD317638E8900DD1EC2 /* Project object */ = {\n\t\t\tisa = PBXProject;\n\t\t\tattributes = {\n\t\t\t\tLastSwiftUpdateCheck = 0940;\n\t\t\t\tLastUpgradeCheck = 1020;\n\t\t\t\tTargetAttributes = {\n\t\t\t\t\t73FCA16D18DE837D009ED4AD = {\n\t\t\t\t\t\tLastSwiftMigration = 0940;\n\t\t\t\t\t};\n\t\t\t\t\tBE0BE99B1E9B221000D736C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tBE0BE9A91E9B238F00D736C7 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 8.2.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tBE10D2BC20FCC68200B616FA = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 9.4.1;\n\t\t\t\t\t\tProvisioningStyle = Automatic;\n\t\t\t\t\t};\n\t\t\t\t\tBE5B7B0A1BBFB048005732C2 = {\n\t\t\t\t\t\tCreatedOnToolsVersion = 7.0;\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuildConfigurationList = 7355ABD617638E8900DD1EC2 /* Build configuration list for PBXProject \"NSDate-Escort\" */;\n\t\t\tcompatibilityVersion = \"Xcode 3.2\";\n\t\t\tdevelopmentRegion = English;\n\t\t\thasScannedForEncodings = 0;\n\t\t\tknownRegions = (\n\t\t\t\tEnglish,\n\t\t\t\ten,\n\t\t\t\tBase,\n\t\t\t);\n\t\t\tmainGroup = 7355ABD217638E8900DD1EC2;\n\t\t\tproductRefGroup = 7355ABDF17638E9600DD1EC2 /* Products */;\n\t\t\tprojectDirPath = \"\";\n\t\t\tprojectRoot = \"\";\n\t\t\ttargets = (\n\t\t\t\t73FCA16D18DE837D009ED4AD /* Test */,\n\t\t\t\tBE5B7B0A1BBFB048005732C2 /* Benchmark */,\n\t\t\t\tBE0BE99B1E9B221000D736C7 /* NSDate_Escort_Cocoa */,\n\t\t\t\tBE0BE9A91E9B238F00D736C7 /* NSDate_Escort_iOS */,\n\t\t\t\tBE10D2BC20FCC68200B616FA /* SwiftTest */,\n\t\t\t);\n\t\t};\n/* End PBXProject section */\n\n/* Begin PBXResourcesBuildPhase section */\n\t\t73FCA16C18DE837D009ED4AD /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t73FCA17718DE837D009ED4AD /* InfoPlist.strings in Resources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE99A1E9B221000D736C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9A81E9B238F00D736C7 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE10D2BB20FCC68200B616FA /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE5B7B091BBFB048005732C2 /* Resources */ = {\n\t\t\tisa = PBXResourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXResourcesBuildPhase section */\n\n/* Begin PBXShellScriptBuildPhase section */\n\t\t9078C6BD826678D6E826CCBC /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-SwiftTest-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tE37CDD676E2886EF4585F0C5 /* [CP] Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t\t\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\",\n\t\t\t\t\"${PODS_ROOT}/Manifest.lock\",\n\t\t\t);\n\t\t\tname = \"[CP] Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t\t\"$(DERIVED_FILE_DIR)/Pods-Test-checkManifestLockResult.txt\",\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_PODFILE_DIR_PATH}/Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [ $? != 0 ] ; then\\n    # print error to STDERR\\n    echo \\\"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\\" >&2\\n    exit 1\\nfi\\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\\necho \\\"SUCCESS\\\" > \\\"${SCRIPT_OUTPUT_FILE_0}\\\"\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n\t\tE4401CC6F9B84993A398AD96 /* Check Pods Manifest.lock */ = {\n\t\t\tisa = PBXShellScriptBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\tinputPaths = (\n\t\t\t);\n\t\t\tname = \"Check Pods Manifest.lock\";\n\t\t\toutputPaths = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t\tshellPath = /bin/sh;\n\t\t\tshellScript = \"diff \\\"${PODS_ROOT}/../Podfile.lock\\\" \\\"${PODS_ROOT}/Manifest.lock\\\" > /dev/null\\nif [[ $? != 0 ]] ; then\\n    cat << EOM\\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\\nEOM\\n    exit 1\\nfi\\n\";\n\t\t\tshowEnvVarsInLog = 0;\n\t\t};\n/* End PBXShellScriptBuildPhase section */\n\n/* Begin PBXSourcesBuildPhase section */\n\t\t73FCA16A18DE837D009ED4AD /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\t17B5C28A17FECDD022B846E6 /* NSDate+Escort.m in Sources */,\n\t\t\t\t17B5C9F98AC409F47299D54B /* EscortDecomposingSpec.m in Sources */,\n\t\t\t\t17B5C474F10F4D9620AFFACC /* FakeDateUtil.m in Sources */,\n\t\t\t\tBEAD6D3E1EB337AA004A4A3B /* EscortAmountOfSpecs.m in Sources */,\n\t\t\t\t17B5C94FD65CD923332ED3EE /* EscortCacheSpec.m in Sources */,\n\t\t\t\tC5BD6A3A196287E30053103A /* AZNSDateKiwiMatcher.m in Sources */,\n\t\t\t\t17B5CEF22C864A71F222AF9B /* EscortDateRoles.m in Sources */,\n\t\t\t\t17B5C584E29A91E50FA691ED /* EscortComparingSpec.m in Sources */,\n\t\t\t\t17B5CB0E0DEEAA0B86DB6754 /* EscortClassSpec.m in Sources */,\n\t\t\t\t17B5CCF9CEC128B380974AF7 /* EscortAdjustingDatesSpec.m in Sources */,\n\t\t\t\t17B5CD2E9AD0EF4A499B5DC2 /* EscortRetrievingIntervalsSpec.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9971E9B221000D736C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE0BE9A41E9B221D00D736C7 /* NSDate+Escort.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE0BE9A51E9B238F00D736C7 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE10D2B920FCC68200B616FA /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE1650E12121340B00868737 /* EscortRetrievingIntervalsSpec.swift in Sources */,\n\t\t\t\tBE1650DF212037FD00868737 /* EscortAdjustingDatesSpec.swift in Sources */,\n\t\t\t\tBE10D2CC2103125F00B616FA /* EscortExtractSpec.swift in Sources */,\n\t\t\t\tBE10D2C020FCC68300B616FA /* EscortComparingSpec.swift in Sources */,\n\t\t\t\tBE10D2CA21020B8500B616FA /* EscortDecomposingSpec.swift in Sources */,\n\t\t\t\tBE10D2C820FCC68B00B616FA /* Date+Escort.swift in Sources */,\n\t\t\t\tBE1650DB210D994300868737 /* EscortDateRoles.swift in Sources */,\n\t\t\t\tBE1650DD210DAC5700868737 /* EscortClassSpec.swift in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n\t\tBE5B7B071BBFB048005732C2 /* Sources */ = {\n\t\t\tisa = PBXSourcesBuildPhase;\n\t\t\tbuildActionMask = 2147483647;\n\t\t\tfiles = (\n\t\t\t\tBE5B7B151BBFB0AD005732C2 /* BenchMakeFormReferenceDate.m in Sources */,\n\t\t\t);\n\t\t\trunOnlyForDeploymentPostprocessing = 0;\n\t\t};\n/* End PBXSourcesBuildPhase section */\n\n/* Begin PBXTargetDependency section */\n\t\tBE10D2C420FCC68300B616FA /* PBXTargetDependency */ = {\n\t\t\tisa = PBXTargetDependency;\n\t\t\ttarget = BE0BE99B1E9B221000D736C7 /* NSDate_Escort_Cocoa */;\n\t\t\ttargetProxy = BE10D2C320FCC68300B616FA /* PBXContainerItemProxy */;\n\t\t};\n/* End PBXTargetDependency section */\n\n/* Begin PBXVariantGroup section */\n\t\t73FCA17518DE837D009ED4AD /* InfoPlist.strings */ = {\n\t\t\tisa = PBXVariantGroup;\n\t\t\tchildren = (\n\t\t\t\t73FCA17618DE837D009ED4AD /* en */,\n\t\t\t);\n\t\t\tname = InfoPlist.strings;\n\t\t\tsourceTree = \"<group>\";\n\t\t};\n/* End PBXVariantGroup section */\n\n/* Begin XCBuildConfiguration section */\n\t\t7355ABD717638E8900DD1EC2 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tENABLE_TESTABILITY = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.2;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.14;\n\t\t\t\tONLY_ACTIVE_ARCH = YES;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t7355ABD817638E8900DD1EC2 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tCLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES;\n\t\t\t\tCLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_COMMA = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;\n\t\t\t\tCLANG_WARN_OBJC_LITERAL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_RANGE_LOOP_ANALYSIS = YES;\n\t\t\t\tCLANG_WARN_STRICT_PROTOTYPES = YES;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tIPHONEOS_DEPLOYMENT_TARGET = 12.2;\n\t\t\t\tMACOSX_DEPLOYMENT_TARGET = 10.14;\n\t\t\t\tSDKROOT = macosx;\n\t\t\t\tSWIFT_COMPILATION_MODE = wholemodule;\n\t\t\t\tSWIFT_VERSION = 5.0;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\t73FCA17E18DE837D009ED4AD /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 6DD8C2208BC805D0B99E5503 /* Pods-Test.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Test/Test-Prefix.pch\";\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_SYMBOLS_PRIVATE_EXTERN = NO;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"Test/Test-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"info.efcl.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\t73FCA17F18DE837D009ED4AD /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = 5DBBC214A3239FD7DB605EF7 /* Pods-Test.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOPY_PHASE_STRIP = YES;\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tFRAMEWORK_SEARCH_PATHS = (\n\t\t\t\t\t\"$(SDKROOT)/Developer/Library/Frameworks\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t\t\"$(DEVELOPER_FRAMEWORKS_DIR)\",\n\t\t\t\t);\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_PRECOMPILE_PREFIX_HEADER = YES;\n\t\t\t\tGCC_PREFIX_HEADER = \"Test/Test-Prefix.pch\";\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"Test/Test-Info.plist\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"info.efcl.${PRODUCT_NAME:rfc1034identifier}\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tWRAPPER_EXTENSION = xctest;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE0BE9A11E9B221000D736C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"NSDate-Escort_Cocoa/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"Escort.NSDate-Escort\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE0BE9A21E9B221000D736C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"-\";\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tFRAMEWORK_VERSION = A;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = \"NSDate-Escort_Cocoa/Info.plist\";\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"Escort.NSDate-Escort\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE0BE9AF1E9B238F00D736C7 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = NSDate_Escort_iOS/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"Escort.NSDate-Escort-iOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE0BE9B01E9B238F00D736C7 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INFINITE_RECURSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_SUSPICIOUS_MOVE = YES;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCODE_SIGN_IDENTITY = \"\";\n\t\t\t\t\"CODE_SIGN_IDENTITY[sdk=iphoneos*]\" = \"\";\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tCURRENT_PROJECT_VERSION = 1;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEFINES_MODULE = YES;\n\t\t\t\tDYLIB_COMPATIBILITY_VERSION = 1;\n\t\t\t\tDYLIB_CURRENT_VERSION = 1;\n\t\t\t\tDYLIB_INSTALL_NAME_BASE = \"@rpath\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = NSDate_Escort_iOS/Info.plist;\n\t\t\t\tINSTALL_PATH = \"$(LOCAL_LIBRARY_DIR)/Frameworks\";\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = \"Escort.NSDate-Escort-iOS\";\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSKIP_INSTALL = YES;\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t\tVERSIONING_SYSTEM = \"apple-generic\";\n\t\t\t\tVERSION_INFO_PREFIX = \"\";\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE10D2C620FCC68300B616FA /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = E747142ADB2B90EBAEE2595E /* Pods-SwiftTest.debug.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = SwiftTest/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.akuraru.SwiftTest;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Onone\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE10D2C720FCC68300B616FA /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbaseConfigurationReference = CF296903783DAA88609CE74A /* Pods-SwiftTest.release.xcconfig */;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_ANALYZER_NONNULL = YES;\n\t\t\t\tCLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++14\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_WEAK = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_DOCUMENTATION_COMMENTS = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;\n\t\t\t\tCODE_SIGN_IDENTITY = \"iPhone Developer\";\n\t\t\t\tCODE_SIGN_STYLE = Automatic;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tDEVELOPMENT_TEAM = \"\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu11;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tINFOPLIST_FILE = SwiftTest/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/Frameworks @loader_path/Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = com.akuraru.SwiftTest;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = iphoneos;\n\t\t\t\tSWIFT_OPTIMIZATION_LEVEL = \"-Owholemodule\";\n\t\t\t\tTARGETED_DEVICE_FAMILY = \"1,2\";\n\t\t\t\tVALIDATE_PRODUCT = YES;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n\t\tBE5B7B111BBFB048005732C2 /* Debug */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = dwarf;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_DYNAMIC_NO_PIC = NO;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_OPTIMIZATION_LEVEL = 0;\n\t\t\t\tGCC_PREPROCESSOR_DEFINITIONS = (\n\t\t\t\t\t\"DEBUG=1\",\n\t\t\t\t\t\"$(inherited)\",\n\t\t\t\t);\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Benchmark/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = YES;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = jp.co.plusr.Benchmark;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Debug;\n\t\t};\n\t\tBE5B7B121BBFB048005732C2 /* Release */ = {\n\t\t\tisa = XCBuildConfiguration;\n\t\t\tbuildSettings = {\n\t\t\t\tALWAYS_SEARCH_USER_PATHS = NO;\n\t\t\t\tCLANG_CXX_LANGUAGE_STANDARD = \"gnu++0x\";\n\t\t\t\tCLANG_CXX_LIBRARY = \"libc++\";\n\t\t\t\tCLANG_ENABLE_MODULES = YES;\n\t\t\t\tCLANG_ENABLE_OBJC_ARC = YES;\n\t\t\t\tCLANG_WARN_BOOL_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_CONSTANT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;\n\t\t\t\tCLANG_WARN_EMPTY_BODY = YES;\n\t\t\t\tCLANG_WARN_ENUM_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_INT_CONVERSION = YES;\n\t\t\t\tCLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;\n\t\t\t\tCLANG_WARN_UNREACHABLE_CODE = YES;\n\t\t\t\tCLANG_WARN__DUPLICATE_METHOD_MATCH = YES;\n\t\t\t\tCOMBINE_HIDPI_IMAGES = YES;\n\t\t\t\tCOPY_PHASE_STRIP = NO;\n\t\t\t\tDEBUG_INFORMATION_FORMAT = \"dwarf-with-dsym\";\n\t\t\t\tENABLE_NS_ASSERTIONS = NO;\n\t\t\t\tENABLE_STRICT_OBJC_MSGSEND = YES;\n\t\t\t\tGCC_C_LANGUAGE_STANDARD = gnu99;\n\t\t\t\tGCC_NO_COMMON_BLOCKS = YES;\n\t\t\t\tGCC_WARN_64_TO_32_BIT_CONVERSION = YES;\n\t\t\t\tGCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;\n\t\t\t\tGCC_WARN_UNDECLARED_SELECTOR = YES;\n\t\t\t\tGCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;\n\t\t\t\tGCC_WARN_UNUSED_FUNCTION = YES;\n\t\t\t\tGCC_WARN_UNUSED_VARIABLE = YES;\n\t\t\t\tINFOPLIST_FILE = Benchmark/Info.plist;\n\t\t\t\tLD_RUNPATH_SEARCH_PATHS = \"$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks\";\n\t\t\t\tMTL_ENABLE_DEBUG_INFO = NO;\n\t\t\t\tPRODUCT_BUNDLE_IDENTIFIER = jp.co.plusr.Benchmark;\n\t\t\t\tPRODUCT_NAME = \"$(TARGET_NAME)\";\n\t\t\t\tSDKROOT = macosx;\n\t\t\t};\n\t\t\tname = Release;\n\t\t};\n/* End XCBuildConfiguration section */\n\n/* Begin XCConfigurationList section */\n\t\t7355ABD617638E8900DD1EC2 /* Build configuration list for PBXProject \"NSDate-Escort\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t7355ABD717638E8900DD1EC2 /* Debug */,\n\t\t\t\t7355ABD817638E8900DD1EC2 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\t73FCA17D18DE837D009ED4AD /* Build configuration list for PBXNativeTarget \"Test\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\t73FCA17E18DE837D009ED4AD /* Debug */,\n\t\t\t\t73FCA17F18DE837D009ED4AD /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE0BE9A31E9B221000D736C7 /* Build configuration list for PBXNativeTarget \"NSDate_Escort_Cocoa\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE0BE9A11E9B221000D736C7 /* Debug */,\n\t\t\t\tBE0BE9A21E9B221000D736C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE0BE9B11E9B238F00D736C7 /* Build configuration list for PBXNativeTarget \"NSDate_Escort_iOS\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE0BE9AF1E9B238F00D736C7 /* Debug */,\n\t\t\t\tBE0BE9B01E9B238F00D736C7 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE10D2C520FCC68300B616FA /* Build configuration list for PBXNativeTarget \"SwiftTest\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE10D2C620FCC68300B616FA /* Debug */,\n\t\t\t\tBE10D2C720FCC68300B616FA /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n\t\tBE5B7B101BBFB048005732C2 /* Build configuration list for PBXNativeTarget \"Benchmark\" */ = {\n\t\t\tisa = XCConfigurationList;\n\t\t\tbuildConfigurations = (\n\t\t\t\tBE5B7B111BBFB048005732C2 /* Debug */,\n\t\t\t\tBE5B7B121BBFB048005732C2 /* Release */,\n\t\t\t);\n\t\t\tdefaultConfigurationIsVisible = 0;\n\t\t\tdefaultConfigurationName = Release;\n\t\t};\n/* End XCConfigurationList section */\n\t};\n\trootObject = 7355ABD317638E8900DD1EC2 /* Project object */;\n}\n"
  },
  {
    "path": "NSDate-Escort.xcodeproj/xcshareddata/xcschemes/NSDate_Escort.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"BE0BE99B1E9B221000D736C7\"\n               BuildableName = \"NSDate_Escort_Cocoa.framework\"\n               BlueprintName = \"NSDate_Escort_Cocoa\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"BE5B7B0A1BBFB048005732C2\"\n               BuildableName = \"Benchmark.xctest\"\n               BlueprintName = \"Benchmark\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"BE10D2BC20FCC68200B616FA\"\n               BuildableName = \"SwiftTest.xctest\"\n               BlueprintName = \"SwiftTest\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n               BuildableName = \"Test.xctest\"\n               BlueprintName = \"Test\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"BE0BE99B1E9B221000D736C7\"\n            BuildableName = \"NSDate_Escort_Cocoa.framework\"\n            BlueprintName = \"NSDate_Escort_Cocoa\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"BE0BE99B1E9B221000D736C7\"\n            BuildableName = \"NSDate_Escort_Cocoa.framework\"\n            BlueprintName = \"NSDate_Escort_Cocoa\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"BE0BE99B1E9B221000D736C7\"\n            BuildableName = \"NSDate_Escort_Cocoa.framework\"\n            BlueprintName = \"NSDate_Escort_Cocoa\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "NSDate-Escort.xcodeproj/xcshareddata/xcschemes/NSDate_Escort_iOS.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"BE0BE9A91E9B238F00D736C7\"\n               BuildableName = \"NSDate_Escort_iOS.framework\"\n               BlueprintName = \"NSDate_Escort_iOS\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n      </Testables>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"BE0BE9A91E9B238F00D736C7\"\n            BuildableName = \"NSDate_Escort_iOS.framework\"\n            BlueprintName = \"NSDate_Escort_iOS\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"BE0BE9A91E9B238F00D736C7\"\n            BuildableName = \"NSDate_Escort_iOS.framework\"\n            BlueprintName = \"NSDate_Escort_iOS\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "NSDate-Escort.xcodeproj/xcshareddata/xcschemes/Test.xcscheme",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Scheme\n   LastUpgradeVersion = \"1020\"\n   version = \"1.3\">\n   <BuildAction\n      parallelizeBuildables = \"YES\"\n      buildImplicitDependencies = \"YES\">\n      <BuildActionEntries>\n         <BuildActionEntry\n            buildForTesting = \"YES\"\n            buildForRunning = \"YES\"\n            buildForProfiling = \"YES\"\n            buildForArchiving = \"YES\"\n            buildForAnalyzing = \"YES\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n               BuildableName = \"Test.xctest\"\n               BlueprintName = \"Test\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </BuildActionEntry>\n      </BuildActionEntries>\n   </BuildAction>\n   <TestAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\">\n      <Testables>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n               BuildableName = \"Test.xctest\"\n               BlueprintName = \"Test\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n         <TestableReference\n            skipped = \"NO\">\n            <BuildableReference\n               BuildableIdentifier = \"primary\"\n               BlueprintIdentifier = \"BE10D2BC20FCC68200B616FA\"\n               BuildableName = \"SwiftTest.xctest\"\n               BlueprintName = \"SwiftTest\"\n               ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n            </BuildableReference>\n         </TestableReference>\n      </Testables>\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n            BuildableName = \"Test.xctest\"\n            BlueprintName = \"Test\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </TestAction>\n   <LaunchAction\n      buildConfiguration = \"Debug\"\n      selectedDebuggerIdentifier = \"Xcode.DebuggerFoundation.Debugger.LLDB\"\n      selectedLauncherIdentifier = \"Xcode.DebuggerFoundation.Launcher.LLDB\"\n      launchStyle = \"0\"\n      useCustomWorkingDirectory = \"NO\"\n      ignoresPersistentStateOnLaunch = \"NO\"\n      debugDocumentVersioning = \"YES\"\n      debugServiceExtension = \"internal\"\n      allowLocationSimulation = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n            BuildableName = \"Test.xctest\"\n            BlueprintName = \"Test\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n      <AdditionalOptions>\n      </AdditionalOptions>\n   </LaunchAction>\n   <ProfileAction\n      buildConfiguration = \"Release\"\n      shouldUseLaunchSchemeArgsEnv = \"YES\"\n      savedToolIdentifier = \"\"\n      useCustomWorkingDirectory = \"NO\"\n      debugDocumentVersioning = \"YES\">\n      <MacroExpansion>\n         <BuildableReference\n            BuildableIdentifier = \"primary\"\n            BlueprintIdentifier = \"73FCA16D18DE837D009ED4AD\"\n            BuildableName = \"Test.xctest\"\n            BlueprintName = \"Test\"\n            ReferencedContainer = \"container:NSDate-Escort.xcodeproj\">\n         </BuildableReference>\n      </MacroExpansion>\n   </ProfileAction>\n   <AnalyzeAction\n      buildConfiguration = \"Debug\">\n   </AnalyzeAction>\n   <ArchiveAction\n      buildConfiguration = \"Release\"\n      revealArchiveInOrganizer = \"YES\">\n   </ArchiveAction>\n</Scheme>\n"
  },
  {
    "path": "NSDate-Escort.xcworkspace/contents.xcworkspacedata",
    "content": "<?xml version='1.0' encoding='UTF-8'?><Workspace version='1.0'><FileRef location='group:NSDate-Escort.xcodeproj'/><FileRef location='group:Pods/Pods.xcodeproj'/></Workspace>"
  },
  {
    "path": "NSDate-Escort.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>IDEDidComputeMac32BitWarning</key>\n\t<true/>\n</dict>\n</plist>\n"
  },
  {
    "path": "NSDate-Escort_Cocoa/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "NSDate-Escort_Cocoa/NSDate-Escort.h",
    "content": "//\n//  NSDate-Escort.h\n//  NSDate-Escort\n//\n//  Created by akuraru on 2017/04/10.\n//\n//\n\n#import <Cocoa/Cocoa.h>\n\n//! Project version number for NSDate-Escort.\nFOUNDATION_EXPORT double NSDate_EscortVersionNumber;\n\n//! Project version string for NSDate-Escort.\nFOUNDATION_EXPORT const unsigned char NSDate_EscortVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <NSDate_Escort/PublicHeader.h>\n\n\n"
  },
  {
    "path": "NSDate_Escort_iOS/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>FMWK</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>$(CURRENT_PROJECT_VERSION)</string>\n\t<key>NSPrincipalClass</key>\n\t<string></string>\n</dict>\n</plist>\n"
  },
  {
    "path": "NSDate_Escort_iOS/NSDate_Escort_iOS.h",
    "content": "//\n//  NSDate_Escort_iOS.h\n//  NSDate_Escort_iOS\n//\n//  Created by akuraru on 2017/04/10.\n//\n//\n\n#import <UIKit/UIKit.h>\n\n//! Project version number for NSDate_Escort_iOS.\nFOUNDATION_EXPORT double NSDate_Escort_iOSVersionNumber;\n\n//! Project version string for NSDate_Escort_iOS.\nFOUNDATION_EXPORT const unsigned char NSDate_Escort_iOSVersionString[];\n\n// In this header, you should import all the public headers of your framework using statements like #import <NSDate_Escort_iOS/PublicHeader.h>\n\n\n"
  },
  {
    "path": "Podfile",
    "content": "source 'https://github.com/CocoaPods/Specs.git'\nplatform :ios, '11.4'\n\ntarget :Test do\n\tpod 'Kiwi'\n\tpod 'AZDateBuilder'\nend\n\ntarget :SwiftTest do\n\tswift_version= '4.2'\n\tpod 'Quick'\n\tpod 'AZDateBuilder/Swift'\nend"
  },
  {
    "path": "README.md",
    "content": "# NSDate-Escort [![Build Status](https://travis-ci.org/azu/NSDate-Escort.png?branch=master)](https://travis-ci.org/azu/NSDate-Escort)\n\nA NSDate Category library.\n\nCurrent Status : **RELEASE**\n\n## Proposal\n\n- [NSDate-Extensions](https://github.com/erica/NSDate-Extensions \"NSDate-Extensions\") Compatible API\n- Cache & Fast implement\n- [[![Build Status](https://travis-ci.org/azu/NSDate-Escort.png?branch=master)](https://travis-ci.org/azu/NSDate-Escort)] Test Test Test!\n- Test multiple languages\n- MIT License\n\n## Installation\n\n### CocoaPods\n\n1. ``pod 'NSDate-Escort'``\n\n### D&D\n\n1. Drag and drop the `NSDate-Escort` folder into your project.\n\n## Usage\n\n``` objc\n/**\n Returns the calendarIdentifier of calendars that is used by this library for date calculation.\n @see AZ_setDefaultCalendarIdentifier: for more details.\n */\n+ (NSString *)AZ_defaultCalendarIdentifier;\n/**\n Sets the calendarIdentifier of calendars that is used by this library for date calculation.\n You can specify any calendarIdentifiers predefined by NSLocale. If you provide nil, the library uses\n [NSCalendar currentCalendar]. Default value is nil.\n\n You can't provide individual calendars for individual date objects. If you need to perform such\n complicated date calculations, you should rather create calendars on your own.\n */\n+ (void)AZ_setDefaultCalendarIdentifier:(NSString *)calendarIdentifier;\n\n#pragma mark - Relative dates from the current date\n\n+ (NSDate *)dateTomorrow;\n+ (NSDate *)dateYesterday;\n+ (NSDate *)dateWithDaysFromNow:(NSInteger) dDays;\n+ (NSDate *)dateWithDaysBeforeNow:(NSInteger) dDays;\n+ (NSDate *)dateWithHoursFromNow:(NSInteger) dHours;\n+ (NSDate *)dateWithHoursBeforeNow:(NSInteger) dHours;\n+ (NSDate *)dateWithMinutesFromNow:(NSInteger) dMinutes;\n+ (NSDate *)dateWithMinutesBeforeNow:(NSInteger) dMinutes;\n\n#pragma mark - Comparing dates\n\n- (BOOL)isEqualToDateIgnoringTime:(NSDate *) otherDate;\n- (BOOL)isToday;\n- (BOOL)isTomorrow;\n- (BOOL)isYesterday;\n- (BOOL)isSameWeekAsDate:(NSDate *) aDate;\n- (BOOL)isThisWeek;\n- (BOOL)isNextWeek;\n- (BOOL)isLastWeek;\n- (BOOL)isSameMonthAsDate:(NSDate *) aDate;\n- (BOOL)isThisMonth;\n- (BOOL)isSameYearAsDate:(NSDate *) aDate;\n- (BOOL)isThisYear;\n- (BOOL)isNextYear;\n- (BOOL)isLastYear;\n- (BOOL)isEarlierThanDate:(NSDate *) aDate;\n- (BOOL)isLaterThanDate:(NSDate *) aDate;\n- (BOOL)isEarlierThanOrEqualDate:(NSDate *) aDate;\n- (BOOL)isLaterThanOrEqualDate:(NSDate *) aDate;\n- (BOOL)isInFuture;\n- (BOOL)isInPast;\n#pragma mark - Date roles\n- (BOOL)isTypicallyWorkday;\n- (BOOL)isTypicallyWeekend;\n#pragma mark - Adjusting dates\n- (NSDate *)dateByAddingYears:(NSInteger) dYears;\n- (NSDate *)dateBySubtractingYears:(NSInteger) dYears;\n- (NSDate *)dateByAddingMonths:(NSInteger) dMonths;\n- (NSDate *)dateBySubtractingMonths:(NSInteger) dMonths;\n- (NSDate *)dateByAddingDays:(NSInteger) dDays;\n- (NSDate *)dateBySubtractingDays:(NSInteger) dDays;\n- (NSDate *)dateByAddingHours:(NSInteger) dHours;\n- (NSDate *)dateBySubtractingHours:(NSInteger) dHours;\n- (NSDate *)dateByAddingMinutes:(NSInteger) dMinutes;\n- (NSDate *)dateBySubtractingMinutes:(NSInteger) dMinutes;\n- (NSDate *)dateByAddingSeconds:(NSInteger) dSeconds;\n- (NSDate *)dateBySubtractingSeconds:(NSInteger) dSeconds;\n- (NSDate *)dateAtStartOfDay;\n- (NSDate *)dateAtStartOfNextDay;\n- (NSDate *)dateAtStartOfWeek;\n- (NSDate *)dateAtStartOfNextWeek;\n- (NSDate *)dateAtStartOfMonth;\n- (NSDate *)dateAtStartOfNextMonth;\n- (NSDate *)dateAtStartOfYear;\n- (NSDate *)dateAtStartOfNextYear;\n\n#pragma mark - Retrieving intervals\n- (NSInteger)secondsAfterDate:(NSDate *) aDate;\n- (NSInteger)secondsBeforeDate:(NSDate *) aDate;\n- (NSInteger)minutesAfterDate:(NSDate *) aDate;\n- (NSInteger)minutesBeforeDate:(NSDate *) aDate;\n- (NSInteger)hoursAfterDate:(NSDate *) aDate;\n- (NSInteger)hoursBeforeDate:(NSDate *) aDate;\n- (NSInteger)daysAfterDate:(NSDate *) aDate;\n- (NSInteger)daysBeforeDate:(NSDate *) aDate;\n- (NSInteger)monthsAfterDate:(NSDate *) aDate;\n- (NSInteger)monthsBeforeDate:(NSDate *) aDate;\n- (NSInteger)distanceInDaysToDate:(NSDate *) aDate;\n\n#pragma mark amount\n\n- (NSInteger)hoursOfDay;\n- (NSInteger)daysOfMonth;\n- (NSInteger)daysOfYear;\n- (NSInteger)monthsOfYear;\n\n#pragma mark - Decomposing dates\n/**\n* return nearest hour\n*/\n@property(readonly) NSInteger nearestHour;\n@property(readonly) NSInteger hour;\n@property(readonly) NSInteger minute;\n@property(readonly) NSInteger seconds;\n@property(readonly) NSInteger day;\n@property(readonly) NSInteger month;\n@property(readonly) NSInteger week;\n//  in the Gregorian calendar, n is 7 and Sunday is represented by 1.\n@property(readonly) NSInteger weekday;\n@property(readonly) NSInteger firstDayOfWeekday;\n@property(readonly) NSInteger lastDayOfWeekday;\n// e.g. 2nd Tuesday of the month == 2\n@property(readonly) NSInteger nthWeekday;\n@property(readonly) NSInteger year;\n@property(readonly) NSInteger gregorianYear;\n@end\n\nNS_ASSUME_NONNULL_END\n\n```\n\n## Contributing\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request :D\n\n## Note\n\n### What's the difference with [NSDate-Extensions](https://github.com/erica/NSDate-Extensions \"NSDate-Extensions\")?\n\nThis library has\n\n* many test codes\n* some additional methods.\n* safely implements\n* cache system\n\n## Additional methods?\n\nYou should see `NSDate-Escort.h` :\n\n``` objc\n+ (NSString *)AZ_defaultCalendarIdentifier;\n+ (void)AZ_setDefaultCalendarIdentifier:(NSString *)calendarIdentifier;\n\n- (NSDate *)dateAtEndOfDay;\n- (NSDate *)dateAtStartOfMonth;\n- (NSDate *)dateAtEndOfMonth;\n- (NSDate *)dateByAddingYears:(NSInteger) dYears;\n- (NSDate *)dateBySubtractingYears:(NSInteger) dYears;\n- (NSDate *)dateByAddingMonths:(NSInteger) dMonths;\n- (NSDate *)dateBySubtractingMonths:(NSInteger) dMonths;\n- (BOOL)isEarlierThanOrEqualDate:(NSDate *) aDate;\n- (BOOL)isLaterThanOrEqualDate:(NSDate *) aDate;\n- (NSInteger)monthsAfterDate:(NSDate *) aDate;\n- (NSInteger)monthsBeforeDate:(NSDate *) aDate;\n@property(readonly) NSInteger firstDayOfWeekday;\n@property(readonly) NSInteger lastDayOfWeekday;\n```\n\n## Changelog\n\nSee [Releases · azu/NSDate-Escort](https://github.com/azu/NSDate-Escort/releases \"Releases · azu/NSDate-Escort\")\n\n## License\n\nMIT\n"
  },
  {
    "path": "SwiftTest/EscortAdjustingDatesSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortAdjustingDatesSpec: QuickSpec {\n    override func spec() {\n        describe(\"add(day:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"add 0 day should return 2010-10-11\") {\n                XCTAssertEqual(currentDate, currentDate.add(day: 0))\n            }\n            it(\"add 1 day should return 2010-10-12\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 12,\n                    .hour: 12,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(day: 1))\n            }\n            it(\"add 30 days should return 2010-11-10\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 11,\n                    .day: 10,\n                    .hour: 12,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(day: 30))\n            }\n        }\n        describe(\"add(hour:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"add 0 hour should return 2010-10-11 12\") {\n                XCTAssertEqual(currentDate, currentDate.add(hour: 0))\n            }\n            it(\"add 1 hour should return 2010-10-11 13\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 13,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(hour: 1))\n            }\n            it(\"add 25 hours should return 2010-11-11 13\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 12,\n                    .hour: 13,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(hour: 25))\n            }\n        }\n        describe(\"add(minute:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"add 0 minute should return 2010-10-11 12:13\") {\n                XCTAssertEqual(currentDate, currentDate.add(minute: 0))\n            }\n            it(\"add 1 minute should return 2010-10-11 12:14\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 12,\n                    .minute: 14,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(minute: 1))\n            }\n            it(\"add 60 minutes should return 2010-10-11 13:13\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 13,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.add(minute: 60))\n            }\n        }\n        describe(\"startDateOfYear\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"should return 2010-01-01 00:00:00\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 1,\n                    .day: 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.startDateOfYear())\n            }\n        }\n        describe(\"startDateOfMonth\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"should return 2010-10-01 00:00:00\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.startDateOfMonth())\n            }\n        }\n        describe(\"startDateOfWeek\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"should return 2010-10-10 00:00:00\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.startDateOfWeekday())\n            }\n        }\n        describe(\"startDateOfDay\") {\n            let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 12,\n                    .minute: 13,\n                    .second: 14,\n                    ])\n            it(\"should return 2010-10-11 00:00:00\") {\n                let expectDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertEqual(expectDate, currentDate.startDateOfDay())\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortClassSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortClassSpec: QuickSpec {\n    override func spec() {\n        describe(\"tomorrow\") {\n            let date = Date()\n            it(\"should return add 1 day between 1 second\") {\n                let tomorrow = Date.tomorrow()\n                let add1day = date.add(day: 1)\n                XCTAssertTrue(add1day < tomorrow && tomorrow < add1day.add(second: 1))\n            }\n        }\n        describe(\"yesterday\") {\n            let date = Date()\n            it(\"should return subtract 1 day between 1 second\") {\n                let yesterday = Date.yesterday()\n                let subtract1day = date.add(day: -1)\n                XCTAssertTrue(subtract1day < yesterday && yesterday < subtract1day.add(second: 1))\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortComparingSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortComparingSpec: QuickSpec {\n    override func spec() {\n        describe(\"- isEqual(ignoringTime: date)\") {\n            let currentDate = Date()\n            it(\"when same the date should be true\") {\n                XCTAssertTrue(currentDate.isEqual(ignoringTime: currentDate))\n            }\n            context(\"when target is today\") {\n                it(\"of start should return true\") {\n                    let beginOfDate = currentDate.date(by: [\n                        .hour: 0,\n                        .minute: 0,\n                        .second: 0,\n                        ])\n                    XCTAssertTrue(currentDate.isEqual(ignoringTime: beginOfDate))\n                }\n                it(\"of end should return true\") {\n                    let endOfDate = currentDate.date(by: [\n                        .hour: 0,\n                        .minute: 0,\n                        .second: 0,\n                        ])\n                    XCTAssertTrue(currentDate.isEqual(ignoringTime: endOfDate))\n                }\n            }\n            it(\"when target is a later day should return false\") {\n                let laterDate = currentDate.date(by: [\n                    .day: currentDate.day + Int(arc4random()) + 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertFalse(currentDate.isEqual(ignoringTime: laterDate))\n            }\n            it(\"when target is a earler day should return false\") {\n                let earlerDate = currentDate.date(by: [\n                    .day: currentDate.day - Int(arc4random()) - 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertFalse(currentDate.isEqual(ignoringTime: earlerDate))\n            }\n            it(\"when target is previous era should return false\") {\n                let currentDate = Date.date(by: [\n                    .year: 2014,\n                    .month: 5,\n                    .day: 19,\n                    ])\n                let previousEraDate = Date.date(by: [\n                    .year: 1951,\n                    .month: 5,\n                    .day: 19,\n                    ])\n                \n                Date.identifier = .japanese\n                XCTAssertFalse(currentDate.isEqual(ignoringTime: previousEraDate))\n            }\n        }\n        describe(\"isToday\") {\n            let currentDate = Date()\n            it(\"when subject is same date should return true\") {\n                XCTAssertTrue(currentDate.isToday())\n            }\n            it(\"when subject is a later day should return false\") {\n                let laterDate = currentDate.date(by: [\n                    .day: currentDate.day + 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertFalse(laterDate.isToday())\n            }\n            it(\"when subject is a earler day should return false\") {\n                let earlerDate = currentDate.date(by: [\n                    .day: currentDate.day - 1,\n                    .hour: 23,\n                    .minute: 59,\n                    .second: 59,\n                    ])\n                XCTAssertFalse(earlerDate.isToday())\n            }\n        }\n        describe(\"isTomorrow\") {\n            let currentDate = Date()\n            it(\"when subject is same date should return false\") {\n                XCTAssertFalse(currentDate.isTomorrow())\n            }\n            it(\"when subject is a tomorrow should return true\") {\n                let tomorrow = currentDate.date(by: [\n                    .day: currentDate.day + 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertTrue(tomorrow.isTomorrow())\n            }\n            it(\"when subject is a 2 days later should return false\") {\n                let laterDate = currentDate.date(by: [\n                    .day: currentDate.day + 2,\n                    .hour: 23,\n                    .minute: 59,\n                    .second: 59,\n                    ])\n                XCTAssertFalse(laterDate.isTomorrow())\n            }\n        }\n        describe(\"isYesterday\") {\n            let currentDate = Date()\n            it(\"when subject is same date should return false\") {\n                XCTAssertFalse(currentDate.isYesterday())\n            }\n            it(\"when subject is a tomorrow should return true\") {\n                let tomorrow = currentDate.date(by: [\n                    .day: currentDate.day - 1,\n                    .hour: 0,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertTrue(tomorrow.isYesterday())\n            }\n            it(\"when subject is a 2 days later should return false\") {\n                let laterDate = currentDate.date(by: [\n                    .day: currentDate.day - 2,\n                    .hour: 23,\n                    .minute: 59,\n                    .second: 59,\n                    ])\n                XCTAssertFalse(laterDate.isYesterday())\n            }\n        }\n        describe(\"isSameWeekAsDate\") {\n            context(\"today is 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                it(\"same date should return false\") {\n                    XCTAssertTrue(currentDate.isSameWeek(as: currentDate))\n                }\n                context(\"next day (monday)\") {\n                    context(\"firstWeekday is sunday\") {\n                        beforeEach {\n                            var beginingOfMondayCalendar = Calendar(identifier: .gregorian)\n                            beginingOfMondayCalendar.firstWeekday = 1\n                            Date._currentCalendar = beginingOfMondayCalendar\n                            Date.identifier = .gregorian\n                        }\n                        afterEach {\n                            Date._currentCalendar = nil\n                            Date.identifier = nil\n                        }\n                        it(\"should return true\") {\n                            XCTAssertTrue(currentDate.isSameWeek(as: currentDate.add(day: 1)))\n                        }\n                    }\n                    context(\"firstWeekday is monday\") {\n                        beforeEach {\n                            var beginingOfMondayCalendar = Calendar(identifier: .gregorian)\n                            beginingOfMondayCalendar.firstWeekday = 2\n                            Date._currentCalendar = beginingOfMondayCalendar\n                            Date.identifier = .gregorian\n                        }\n                        afterEach {\n                            Date._currentCalendar = nil\n                            Date.identifier = nil\n                        }\n                        it(\"should return true\") {\n                            XCTAssertFalse(currentDate.isSameWeek(as: currentDate.add(day: 1)))\n                        }\n                    }\n                }\n                context(\"within this week\") {\n                    it(\"firstOfWeek should return true\") {\n                        XCTAssertTrue(currentDate.isSameWeek(as: currentDate.startDateOfWeekday()))\n                    }\n                    it(\"endOfWeek should return true\") {\n                        let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                        let weekend = startDate.addingTimeInterval(interval - 1)\n                        XCTAssertTrue(currentDate.isSameWeek(as: weekend))\n                    }\n                }\n                it(\"when same the week, but difference year should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.add(year: 1)))\n                }\n                it(\"next week should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.addingTimeInterval(currentDate.date(of: .weekOfYear).interval)))\n                }\n                it(\"last week should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.addingTimeInterval(-(currentDate.date(of: .weekOfYear).interval))))\n                }\n            }\n            context(\"today is 2015-03-30\") {\n                let currentDate = Date.date(by: [\n                    .year: 2015,\n                    .month: 3,\n                    .day: 30,\n                    ])\n                it(\"same date should return false\") {\n                    XCTAssertTrue(currentDate.isSameWeek(as: currentDate))\n                }\n                context(\"within this week\") {\n                    it(\"firstOfWeek should return true\") {\n                        XCTAssertTrue(currentDate.isSameWeek(as: currentDate.startDateOfWeekday()))\n                    }\n                    it(\"endOfWeek should return true\") {\n                        let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                        let weekend = startDate.addingTimeInterval(interval - 1)\n                        XCTAssertTrue(currentDate.isSameWeek(as: weekend))\n                    }\n                }\n                it(\"when same the week, but difference year should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.add(year: 1)))\n                }\n                it(\"next week should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.addingTimeInterval(currentDate.date(of: .weekOfYear).interval)))\n                }\n                it(\"last week should return false\") {\n                    XCTAssertFalse(currentDate.isSameWeek(as: currentDate.addingTimeInterval(-(currentDate.date(of: .weekOfYear).interval))))\n                }\n            }\n            context(\"today is 1989-01-07\") {\n                let currentDate = Date.date(by: [\n                    .year: 1989,\n                    .month: 1,\n                    .day: 7,\n                    ])\n                beforeEach {\n                    var beginingOfMondayCalendar = Calendar(identifier: .japanese)\n                    beginingOfMondayCalendar.firstWeekday = 2\n                    Date._currentCalendar = beginingOfMondayCalendar\n                    Date.identifier = .japanese\n                }\n                afterEach {\n                    Date._currentCalendar = nil\n                    Date.identifier = nil\n                }\n                it(\"next era of same week should return true\") {\n                    XCTAssertTrue(currentDate.isSameWeek(as: currentDate.add(day: 1)))\n                }\n            }\n        }\n        describe(\"isThisWeek\") {\n            let currentDate = Date()\n            it(\"when now should return true\") {\n                XCTAssertTrue(currentDate.isThisWeek())\n            }\n            it(\"when start date of weekday should return true\") {\n                XCTAssertTrue(currentDate.startDateOfWeekday().isThisWeek())\n            }\n            it(\"when end date of weekday should return true\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let weekend = startDate.addingTimeInterval(interval - 1)\n                XCTAssertTrue(weekend.isThisWeek())\n            }\n            it(\"when last week should return false\") {\n                XCTAssertFalse(currentDate.startDateOfWeekday().addingTimeInterval(-1).isThisWeek())\n            }\n            it(\"when next week should return false\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let nextWeek = startDate.addingTimeInterval(interval)\n                XCTAssertFalse(nextWeek.isThisWeek())\n            }\n        }\n        describe(\"isNextWeek\") {\n            let currentDate = Date().add(weekOfYear: 1)\n            it(\"when next week should return true\") {\n                XCTAssertTrue(currentDate.isNextWeek())\n            }\n            it(\"when start date of weekday should return true\") {\n                XCTAssertTrue(currentDate.startDateOfWeekday().isNextWeek())\n            }\n            it(\"when end date of weekday should return true\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let weekend = startDate.addingTimeInterval(interval - 1)\n                XCTAssertTrue(weekend.isNextWeek())\n            }\n            it(\"when last week should return false\") {\n                XCTAssertFalse(currentDate.startDateOfWeekday().addingTimeInterval(-1).isNextWeek())\n            }\n            it(\"when next week should return false\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let nextWeek = startDate.addingTimeInterval(interval)\n                XCTAssertFalse(nextWeek.isNextWeek())\n            }\n        }\n        describe(\"isLastWeek\") {\n            let currentDate = Date().add(weekOfYear: -1)\n            it(\"when next week should return true\") {\n                XCTAssertTrue(currentDate.isLastWeek())\n            }\n            it(\"when start date of weekday should return true\") {\n                XCTAssertTrue(currentDate.startDateOfWeekday().isLastWeek())\n            }\n            it(\"when end date of weekday should return true\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let weekend = startDate.addingTimeInterval(interval - 1)\n                XCTAssertTrue(weekend.isLastWeek())\n            }\n            it(\"when last week should return false\") {\n                XCTAssertFalse(currentDate.startDateOfWeekday().addingTimeInterval(-1).isLastWeek())\n            }\n            it(\"when next week should return false\") {\n                let (startDate, interval) = currentDate.date(of: .weekOfYear)\n                let nextWeek = startDate.addingTimeInterval(interval)\n                XCTAssertFalse(nextWeek.isLastWeek())\n            }\n        }\n        describe(\"isSameMonthAsDate\") {\n            context(\"today is 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                it(\"same day should return true\") {\n                    XCTAssertTrue(currentDate.isSameMonth(as: currentDate))\n                }\n                it(\"with in this month at start of month should return true\") {\n                    XCTAssertTrue(currentDate.isSameMonth(as: currentDate.startDateOfMonth()))\n                }\n                it(\"with in this month at end of month should return true\") {\n                    let (startDate, interval) = currentDate.date(of: .month)\n                    let endOfMonth = startDate.addingTimeInterval(interval - 1)\n                    XCTAssertTrue(currentDate.isSameMonth(as: endOfMonth))\n                }\n                it(\"with in last month at end of month should return false\") {\n                    XCTAssertFalse(currentDate.isSameMonth(as: currentDate.startDateOfMonth().addingTimeInterval(-1)))\n                }\n                it(\"with in next month at start of month should return false\") {\n                    let (startDate, interval) = currentDate.date(of: .month)\n                    let nextMonth = startDate.addingTimeInterval(interval)\n                    XCTAssertFalse(currentDate.isSameMonth(as: nextMonth))\n                }\n                it(\"next year should return false\") {\n                    XCTAssertFalse(currentDate.isSameMonth(as: currentDate.add(year: 1)))\n                }\n            }\n            context(\"today is 1989-01-07\") {\n                let currentDate = Date.date(by: [\n                    .year: 1989,\n                    .month: 1,\n                    .day: 7,\n                    ])\n                beforeEach {\n                    Date.identifier = .japanese\n                }\n                afterEach {\n                    Date.identifier = nil\n                }\n                it(\"next era of same month should return true\") {\n                    XCTAssertTrue(currentDate.isSameMonth(as: currentDate.add(day: 1)))\n                }\n            }\n            context(\"today is 2010-02-13\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 2,\n                    .day: 13,\n                    ])\n                beforeEach {\n                    Date.identifier = .chinese\n                }\n                afterEach {\n                    Date.identifier = nil\n                }\n                it(\"next era of same month should return true\") {\n                    XCTAssertTrue(currentDate.isSameMonth(as: currentDate.add(day: 1)))\n                }\n            }\n        }\n        describe(\"isThisMonth\") {\n            let currentDate = Date()\n            it(\"when sameMonth as Date should return true\") {\n                XCTAssertTrue(currentDate.isThisMonth())\n            }\n        }\n        describe(\"isSameYearAsDate\") {\n            context(\"today is 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                context(\"within this year\") {\n                    it(\"date at start of year should return true\") {\n                        XCTAssertTrue(currentDate.isSameYear(as: currentDate.startDateOfYear()))\n                    }\n                    it(\"date at end of year should return true\") {\n                        let (startDate, interval) = currentDate.date(of: .year)\n                        let endOfYear = startDate.addingTimeInterval(interval - 1)\n                        XCTAssertTrue(currentDate.isSameYear(as: endOfYear))\n                    }\n                }\n                context(\"without this year\") {\n                    it(\"date at last of year should return false\") {\n                        XCTAssertFalse(currentDate.isSameYear(as: currentDate.startDateOfYear().add(second: -1 - Int(arc4random()))))\n                    }\n                    it(\"date at last of year should return false\") {\n                        let (startDate, interval) = currentDate.date(of: .year)\n                        let nextyear = startDate.addingTimeInterval(interval)\n                        XCTAssertFalse(currentDate.isSameYear(as: nextyear))\n                    }\n                }\n            }\n            context(\"today is 1988-01-07\") {\n                let currentDate = Date.date(by: [\n                    .year: 1988,\n                    .month: 1,\n                    .day: 7,\n                    ])\n                beforeEach {\n                    Date.identifier = .japanese\n                }\n                afterEach {\n                    Date.identifier = nil\n                }\n                it(\"next era of same year should return true\") {\n                    XCTAssertTrue(currentDate.isSameYear(as: currentDate.add(day: 1)))\n                }\n            }\n            context(\"today is 2010-02-13\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 2,\n                    .day: 13,\n                    ])\n                beforeEach {\n                    Date.identifier = .chinese\n                }\n                afterEach {\n                    Date.identifier = nil\n                }\n                it(\"next era of same year should return true\") {\n                    XCTAssertTrue(currentDate.isSameYear(as: currentDate.add(day: 1)))\n                }\n            }\n        }\n        describe(\"isThisYear\") {\n            let currentDate = Date()\n            it(\"within this year should return true\") {\n                XCTAssertTrue(currentDate.isThisYear())\n            }\n            it(\"other year should return true\") {\n                XCTAssertFalse(currentDate.add(year: 1 + Int(arc4random())).isThisYear())\n            }\n        }\n        describe(\"isInPast\") {\n            let currentDate = Date()\n            it(\"when earlier time should return true\") {\n                XCTAssertFalse(currentDate.add(second: 1).isInPast())\n            }\n            it(\"when later time should return false\") {\n                XCTAssertTrue(currentDate.add(second: -1).isInPast())\n            }\n        }\n        describe(\"isInFuture\") {\n            let currentDate = Date()\n            it(\"when future time should return true\") {\n                XCTAssertTrue(currentDate.add(second: 1).isInFuture())\n            }\n            it(\"when past time should return false\") {\n                XCTAssertFalse(currentDate.add(second: -1).isInFuture())\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortDateRoles.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortDateRolesSpec: QuickSpec {\n    override func spec() {\n        describe(\"isTypicallyWorkday\") {\n            it(\"when weekday is first should return false\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                XCTAssertFalse(currentDate.isTypicallyWorkday())\n            }\n            it(\"when weekday is last should return false\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 16,\n                    ])\n                XCTAssertFalse(currentDate.isTypicallyWorkday())\n            }\n            it(\"when weekday is last should return true\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11 + Int(arc4random_uniform(5)),\n                    ])\n                XCTAssertTrue(currentDate.isTypicallyWorkday())\n            }\n        }\n        describe(\"isTypicallyWeekend\") {\n            it(\"when weekday is first should return true\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                XCTAssertTrue(currentDate.isTypicallyWeekend())\n            }\n            it(\"when weekday is last should return true\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 16,\n                    ])\n                XCTAssertTrue(currentDate.isTypicallyWeekend())\n            }\n            it(\"when weekday is last should return false\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11 + Int(arc4random_uniform(5)),\n                    ])\n                XCTAssertFalse(currentDate.isTypicallyWeekend())\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortDecomposingSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortDecomposingSpec: QuickSpec {\n    override func spec() {\n        describe(\"era\") {\n            context(\"when 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 15,\n                    ])\n                it(\"gregorian calendar should return 1\") {\n                    Date.identifier = .gregorian\n                    XCTAssertEqual(currentDate.era, 1)\n                }\n                it(\"japanese calendar should return 1\") {\n                    Date.identifier = .japanese\n                    XCTAssertEqual(currentDate.era, 235)\n                }\n            }\n            context(\"when Showa era\") {\n                let currentDate = Date.date(by: [\n                    .year: 1988,\n                    .month: 10,\n                    .day: 11,\n                    ])\n                it(\"japanese calendar should return 63\") {\n                    Date.identifier = .japanese\n                    XCTAssertEqual(currentDate.era, 234)\n                }\n            }\n        }\n        describe(\"year\") {\n            context(\"when 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 15,\n                    ])\n                it(\"gregorian calendar should return 2010\") {\n                    Date.identifier = .gregorian\n                    XCTAssertEqual(currentDate.year, 2010)\n                }\n                it(\"japanese calendar should return 22\") {\n                    Date.identifier = .japanese\n                    XCTAssertEqual(currentDate.year, 22)\n                }\n            }\n            context(\"when Showa era\") {\n                let currentDate = Date.date(by: [\n                    .year: 1988,\n                    .month: 10,\n                    .day: 11,\n                    ])\n                it(\"japanese calendar should return 63\") {\n                    Date.identifier = .japanese\n                    XCTAssertEqual(currentDate.year, 63)\n                }\n            }\n        }\n        describe(\"month\") {\n            it(\"when 2010-10-11 should retuen 11\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    ])\n                XCTAssertEqual(currentDate.month, 10)\n            }\n        }\n        describe(\"day\") {\n            it(\"when 2010-10-11 should retuen 11\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    ])\n                XCTAssertEqual(currentDate.day, 11)\n            }\n        }\n        describe(\"minute\") {\n            it(\"when 01:02:03 should retuen 2\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 1,\n                    .minute: 2,\n                    .second: 3,\n                    ])\n                XCTAssertEqual(currentDate.minute, 2)\n                \n            }\n        }\n        describe(\"second\") {\n            it(\"when 01:02:03 should retuen 3\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 1,\n                    .minute: 2,\n                    .second: 3,\n                    ])\n                XCTAssertEqual(currentDate.second, 3)\n            }\n        }\n        describe(\"weekday\") {\n            it(\"when 2010-01-01 should retuen 6\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 1,\n                    .day: 1,\n                    ])\n                XCTAssertEqual(currentDate.weekday, 6)\n            }\n            it(\"when 2010-10-11 should retuen 2\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    ])\n                XCTAssertEqual(currentDate.weekday, 2)\n            }\n        }\n        describe(\"weekdayOrdinal\") {\n            it(\"when 2010-01-01 should retuen 1\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 1,\n                    .day: 1,\n                    ])\n                XCTAssertEqual(currentDate.weekdayOrdinal, 1)\n            }\n            it(\"when 2010-10-07 should retuen 1\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 7,\n                    ])\n                XCTAssertEqual(currentDate.weekdayOrdinal, 1)\n            }\n            it(\"when 2010-10-08 should retuen 2\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 8,\n                    ])\n                XCTAssertEqual(currentDate.weekdayOrdinal, 2)\n            }\n            it(\"when 2010-10-14 should retuen 2\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 14,\n                    ])\n                XCTAssertEqual(currentDate.weekdayOrdinal, 2)\n            }\n            it(\"when 2010-10-15 should retuen 3\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 15,\n                    ])\n                XCTAssertEqual(currentDate.weekdayOrdinal, 3)\n            }\n        }\n        describe(\"quarter\") {\n            it(\"when 2010-01 should retuen 0\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 1,\n                    ])\n                XCTAssertEqual(currentDate.quarter, 0)\n            }\n        }\n        describe(\"weekOfMonth\") {\n            it(\"when 2010-10-09 should retuen 2\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 9,\n                    ])\n                XCTAssertEqual(currentDate.weekOfMonth, 2)\n            }\n            it(\"when 2010-10-10 should retuen 3\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                XCTAssertEqual(currentDate.weekOfMonth, 3)\n            }\n            it(\"when 2010-10-16 should retuen 3\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 16,\n                    ])\n                XCTAssertEqual(currentDate.weekOfMonth, 3)\n            }\n            it(\"when 2010-10-17 should retuen 4\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 17,\n                    ])\n                XCTAssertEqual(currentDate.weekOfMonth, 4)\n            }\n            it(\"when 2010-10-31 should retuen 4\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 31,\n                    ])\n                XCTAssertEqual(currentDate.weekOfMonth, 6)\n            }\n        }\n        describe(\"weekOfYear\") {\n            it(\"when 2010-10-09 should retuen 41\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 9,\n                    ])\n                XCTAssertEqual(currentDate.weekOfYear, 41)\n            }\n            it(\"when 2010-10-10 should retuen 42\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 10,\n                    ])\n                XCTAssertEqual(currentDate.weekOfYear, 42)\n            }\n            it(\"when 2010-10-16 should retuen 42\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 16,\n                    ])\n                XCTAssertEqual(currentDate.weekOfYear, 42)\n            }\n            it(\"when 2010-10-17 should retuen 43\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 17,\n                    ])\n                XCTAssertEqual(currentDate.weekOfYear, 43)\n            }\n            it(\"when 2010-12-26 should retuen 1\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 12,\n                    .day: 26,\n                    ])\n                XCTAssertEqual(currentDate.weekOfYear, 1)\n            }\n        }\n        describe(\"yearForWeekOfYear\") {\n            it(\"when 2009-12-26 should retuen 2009\") {\n                let currentDate = Date.date(by: [\n                    .year: 2009,\n                    .month: 12,\n                    .day: 26,\n                    ])\n                XCTAssertEqual(currentDate.yearForWeekOfYear, 2009)\n            }\n            it(\"when 2009-12-27 should retuen 2010\") {\n                let currentDate = Date.date(by: [\n                    .year: 2009,\n                    .month: 12,\n                    .day: 27,\n                    ])\n                XCTAssertEqual(currentDate.yearForWeekOfYear, 2010)\n            }\n            it(\"when 2010-12-25 should retuen 2010\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 12,\n                    .day: 25,\n                    ])\n                XCTAssertEqual(currentDate.yearForWeekOfYear, 2010)\n            }\n            it(\"when 2010-12-26 should retuen 2011\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 12,\n                    .day: 26,\n                    ])\n                XCTAssertEqual(currentDate.yearForWeekOfYear, 2011)\n            }\n        }\n        describe(\"nanosecond\") {\n            it(\"when 01:02:03.059 should retuen 59\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 1,\n                    .minute: 2,\n                    .second: 3,\n                    .nanosecond: 59,\n                    ])\n                XCTAssertEqual(currentDate.nanosecond, 59)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortExtractSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortExtractSpec: QuickSpec {\n    override func spec() {\n        describe(\"gregorianYear\") {\n            context(\"when 2010-10-10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 15,\n                    ])\n                it(\"gregorian calendar should return 2010\") {\n                    Date.identifier = .gregorian\n                    XCTAssertEqual(currentDate.gregorianYear, 2010)\n                }\n                it(\"japanese calendar should return 2010\") {\n                    Date.identifier = .japanese\n                    XCTAssertEqual(currentDate.gregorianYear, 2010)\n                }\n            }\n        }\n        describe(\"nearestHour\") {\n            it(\"when 10:00:00 should return 10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 10,\n                    .minute: 0,\n                    .second: 0,\n                    ])\n                XCTAssertEqual(currentDate.nearestHour, 10)\n            }\n            it(\"when 10:29:59 should return 10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 10,\n                    .minute: 29,\n                    .second: 59,\n                    ])\n                XCTAssertEqual(currentDate.nearestHour, 10)\n            }\n            it(\"when 10:30:00 should return 10\") {\n                let currentDate = Date.date(by: [\n                    .year: 2010,\n                    .month: 10,\n                    .day: 11,\n                    .hour: 10,\n                    .minute: 30,\n                    .second: 00,\n                    ])\n                XCTAssertEqual(currentDate.nearestHour, 11)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/EscortRetrievingIntervalsSpec.swift",
    "content": "import XCTest\nimport Quick\nimport AZDateBuilder\n\nclass EscortRetrievingIntervalsSpec: QuickSpec {\n    override func spec() {\n        describe(\"seconds(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 seconds should return 5\") {\n                let anotherDate = currentDate.add(second: 5)\n                XCTAssertEqual(currentDate.seconds(after: anotherDate), 5)\n            }\n            it(\"after 10 minutes should return 600\") {\n                let anotherDate = currentDate.add(minute: 10)\n                XCTAssertEqual(currentDate.seconds(after: anotherDate), 600)\n            }\n        }\n        describe(\"minute(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 miuntes should return 5\") {\n                let anotherDate = currentDate.add(minute: 5)\n                XCTAssertEqual(currentDate.minutes(after: anotherDate), 5)\n            }\n            it(\"after 10 hours should return 600\") {\n                let anotherDate = currentDate.add(hour: 10)\n                XCTAssertEqual(currentDate.minutes(after: anotherDate), 600)\n            }\n        }\n        describe(\"hours(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 hours should return 5\") {\n                let anotherDate = currentDate.add(hour: 5)\n                XCTAssertEqual(currentDate.hours(after: anotherDate), 5)\n            }\n            it(\"after 1 days should return 24\") {\n                let anotherDate = currentDate.add(day: 1)\n                XCTAssertEqual(currentDate.hours(after: anotherDate), 24)\n            }\n        }\n        describe(\"days(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 days should return 5\") {\n                let anotherDate = currentDate.add(day: 5)\n                XCTAssertEqual(currentDate.days(after: anotherDate), 5)\n            }\n            it(\"after 2 months should return 61\") {\n                let anotherDate = currentDate.add(month: 2)\n                XCTAssertEqual(currentDate.days(after: anotherDate), 61)\n            }\n        }\n        describe(\"months(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 months should return 5\") {\n                let anotherDate = currentDate.add(month: 5)\n                XCTAssertEqual(currentDate.months(after: anotherDate), 5)\n            }\n            it(\"after 2 years should return 24\") {\n                let anotherDate = currentDate.add(year: 2)\n                XCTAssertEqual(currentDate.months(after: anotherDate), 24)\n            }\n        }\n        describe(\"years(after:)\") {\n            let currentDate = Date.date(by: [\n                .year: 2010,\n                .month: 10,\n                .day: 11,\n                .hour: 12,\n                .minute: 13,\n                .second: 14,\n                ])\n            it(\"after 5 years should return 5\") {\n                let anotherDate = currentDate.add(year: 5)\n                XCTAssertEqual(currentDate.years(after: anotherDate), 5)\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "SwiftTest/Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>$(DEVELOPMENT_LANGUAGE)</string>\n\t<key>CFBundleExecutable</key>\n\t<string>$(EXECUTABLE_NAME)</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>6.0</string>\n\t<key>CFBundleName</key>\n\t<string>$(PRODUCT_NAME)</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Test/EscortAdjustingDatesSpec.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n#import \"NSDate+AZDateBuilder.h\"\n#import \"FakeDateUtil.h\"\n#import \"AZNSDateKiwiMatcher.h\"\n\n@interface NSDate (EscortMock)\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortAdjustingDates)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n\n    describe(@\"-dateByAddingYears\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            context(@\"adding 0 year\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingYears:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[subject should] equalToDateIgnoringTime:currentDate];\n                });\n            });\n            context(@\"adding 1 year\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingYears:1];\n                });\n                it(@\"should return 2011-10-10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2011,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"adding -1 year\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingYears:-1];\n                });\n                it(@\"should return 2009-10-10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2009,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateBySubtractingYears\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n        });\n    });\n\n    describe(@\"-dateByAddingMonths\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            context(@\"adding 0 month\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMonths:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[subject should] equalToDateIgnoringTime:currentDate];\n                });\n            });\n            context(@\"adding 1 month\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMonths:1];\n                });\n                it(@\"should return 2010-11-10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @11,\n                        AZ_DateUnit.day : @10,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"adding -1 month\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMonths:-1];\n                });\n                it(@\"should return 2010-09-10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @9,\n                        AZ_DateUnit.day : @10,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"-dateBySubtractingMonth\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n        });\n    });\n\n    describe(@\"-dateByAddingDays\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            context(@\"adding 0 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingDays:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[subject should] equalToDateIgnoringTime:currentDate];\n                });\n            });\n            context(@\"adding 1 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingDays:1];\n                });\n                it(@\"should return 2010-10-11\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"adding -1 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingDays:-1];\n                });\n                it(@\"should return 2010-10-09\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"-dateBySubtractingDays\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"before 0 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingDays:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"before 1 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingDays:1];\n                });\n                it(@\"should return 2010-10-09\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"before -1 Day\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingDays:-1];\n                });\n                it(@\"should return 2010-10-11\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                    }];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"-dateByAddingHours\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingHours:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [currentDate dateByAddingHours:1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding 24 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingHours:24];\n                });\n                it(@\"should return 2010-10-11 10:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingHours:-1];\n                });\n                it(@\"should return 2010-10-10 09:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @9,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"-dateBySubtractingHours\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"subtract 0 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingHours:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"subtract 1 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingHours:1];\n                });\n                it(@\"should return 2010-10-10 10:09:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @9,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract 24 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingHours:24];\n                });\n                it(@\"should return 2010-10-09 10:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract -1 hour\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingHours:-1];\n                });\n                it(@\"should return 2010-10-10 11:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateByAddingMinutes\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMinutes:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMinutes:1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @11,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"adding 60 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMinutes:60];\n                });\n                it(@\"should return 2010-10-10 11:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingMinutes:-1];\n                });\n                it(@\"should return 2010-10-10 10:09:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @9,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateBySubtractingMinutes\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"subtract 0 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingMinutes:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"subtract 1 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingMinutes:1];\n                });\n                it(@\"should return 2010-10-10 10:09:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @9,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract 60 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingMinutes:60];\n                });\n                it(@\"should return 2010-10-10 09:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @9,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract -1 minute\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingMinutes:-1];\n                });\n                it(@\"should return 2010-10-10 11:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @11,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateByAddingSounds\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingSeconds:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingSeconds:1];\n                });\n                it(@\"should return 2010-10-10 10:10:11\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @11,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"adding 60 seconds\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingSeconds:60];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @11,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateByAddingSeconds:-1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @9,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"-dateBySubtractingSeconds\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"subtract 0 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingSeconds:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[subject should] equal:currentDate];\n                });\n            });\n            context(@\"subtract 1 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingSeconds:1];\n                });\n                it(@\"should return 2010-10-10 10:10:09\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @9,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract 60 seconds\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingSeconds:60];\n                });\n                it(@\"should return 2010-10-10 10:09:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @9,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n            context(@\"subtract -1 second\", ^{\n                __block NSDate *subject;\n                beforeEach(^{\n                    subject = [currentDate dateBySubtractingSeconds:-1];\n                });\n                it(@\"should return 2010-10-10 11:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @11,\n                    }];\n                    [[subject should] equal:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateAtStartOfDay\", ^{\n        beforeEach(^{\n            NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"GMT\"];\n            [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n            [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n        });\n        context(@\"when the date is 2010-10-10 00:00:00\", ^{\n            __block NSDate *subject;\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n\n                subject = [currentDate dateAtStartOfDay];\n            });\n            it(@\"should return same date\", ^{\n                [[subject should] equal:currentDate];\n            });\n        });\n        context(@\"when the date is 2010-10-10 23:59:59\", ^{\n            __block NSDate *subject;\n            beforeEach(^{\n                NSDate *currentDate;\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n\n                subject = [currentDate dateAtStartOfDay];\n            });\n            it(@\"should return 2010-10-10 00:00:00\", ^{\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                [[subject should] equal:expectDate];\n            });\n        });\n        context(@\"when default time zone is changed\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"GMT\"];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n            });\n            it(@\"should return start of day in new time zone\", ^{\n                NSTimeZone *initialTimeZone = [NSTimeZone localTimeZone];\n                \n                NSTimeZone *newTimeZone = [NSTimeZone timeZoneWithAbbreviation:@\"PET\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:newTimeZone];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:newTimeZone];\n                \n                NSDate *date = [currentDate dateByAddingTimeInterval:[initialTimeZone secondsFromGMT] - [newTimeZone secondsFromGMT]];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                [[[date dateAtStartOfDay] should] equal:expectDate];\n            });\n        });\n    });\n    describe(@\"-dateAtStartOfNextDay\", ^{\n        beforeEach(^{\n            NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"GMT\"];\n            [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n            [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n        });\n        context(@\"when the date is 2010-10-10 00:00:00\", ^{\n            __block NSDate *subject;\n            beforeEach(^{\n                NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                \n                subject = [currentDate dateAtStartOfNextDay];\n            });\n            it(@\"should return 2010-10-11 00:00:00\", ^{\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @11,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                [[subject should] equal:expectDate];\n            });\n        });\n        context(@\"when the date is 2010-10-10 23:59:59\", ^{\n            __block NSDate *subject;\n            beforeEach(^{\n                NSDate *currentDate;\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n                \n                subject = [currentDate dateAtStartOfNextDay];\n            });\n            it(@\"should return 2010-10-11 00:00:00\", ^{\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @11,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                [[subject should] equal:expectDate];\n            });\n        });\n        context(@\"when default time zone is changed\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"GMT\"];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n            });\n            it(@\"should return start of day in new time zone\", ^{\n                NSTimeZone *initialTimeZone = [NSTimeZone localTimeZone];\n                \n                NSTimeZone *newTimeZone = [NSTimeZone timeZoneWithAbbreviation:@\"PET\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:newTimeZone];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:newTimeZone];\n                \n                NSDate *date = [currentDate dateByAddingTimeInterval:[initialTimeZone secondsFromGMT] - [newTimeZone secondsFromGMT]];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @11,\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                [[[date dateAtStartOfNextDay] should] equal:expectDate];\n            });\n        });\n    });\n\n    describe(@\"-dateAtStartOfWeek\", ^{\n        context(@\"When the date is 2014-03-04\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2014,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @4\n                }];\n            });\n\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    NSDate *subject = [currentDate dateAtStartOfWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @2\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    NSDate *subject = [currentDate dateAtStartOfWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @3\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n        context(@\"When the date is 2014-03-01\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2014,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @1\n                }];\n            });\n\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n\n                    NSDate *subject = [currentDate dateAtStartOfWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @2,\n                        AZ_DateUnit.day : @23\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n\n                    NSDate *subject = [currentDate dateAtStartOfWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @2,\n                        AZ_DateUnit.day : @24\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n    \n    describe(@\"-dateAtStartOfNextWeek\", ^{\n        context(@\"When the date is 2014-03-04\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2014,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @4\n                }];\n            });\n            \n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    NSDate *subject = [currentDate dateAtStartOfNextWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @9\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    NSDate *subject = [currentDate dateAtStartOfNextWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @10\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n        context(@\"When the date is 2014-02-28\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2014,\n                    AZ_DateUnit.month : @2,\n                    AZ_DateUnit.day : @28\n                }];\n            });\n            \n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    \n                    NSDate *subject = [currentDate dateAtStartOfNextWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @2\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n            \n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return start of week date object\", ^{\n                    \n                    NSDate *subject = [currentDate dateAtStartOfNextWeek];\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @3\n                    }];\n                    [[subject should] beKindOfClass:[NSDate class]];\n                    [[subject should] equalToDateIgnoringTime:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"-dateAtStartOfMonth\", ^{\n        context(@\"when the date is 2010-10-10 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return start of month date object\", ^{\n                // 2010-10-01\n                NSDate *subject = [currentDate dateAtStartOfMonth];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n    });\n    describe(@\"-dateAtStartOfNextMonth\", ^{\n        context(@\"when the date is 2010-10-10 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return start of next month date object\", ^{\n                // 2010-10-01\n                NSDate *subject = [currentDate dateAtStartOfNextMonth];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @11,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n    });\n\n    describe(@\"-dateAtStartOfYear\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return start of year date object\", ^{\n                // 2010-01-01\n                NSDate *subject = [currentDate dateAtStartOfYear];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n        context(@\"when the date is 1989-01-06 and not Gregorian\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @6\n                }];\n\n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            it(@\"should return start of year date object\", ^{\n                NSDate *subject = [currentDate dateAtStartOfYear];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n    });\n    describe(@\"-dateAtStartOfNextYear\", ^{\n        context(@\"when the date is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return end of next year date object\", ^{\n                // 2010-12-31\n                NSDate *subject = [currentDate dateAtStartOfNextYear];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2011,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n        context(@\"when the date is 2010-2-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @2,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return end of next year date object\", ^{\n                // 2010-12-31\n                NSDate *subject = [currentDate dateAtStartOfNextYear];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2011,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n        context(@\"when the date is 1989-01-06 and not Gregorian\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @6\n                }];\n                \n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            it(@\"should return start of next year date object\", ^{\n                NSDate *subject = [currentDate dateAtStartOfNextYear];\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1990,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n                [[subject should] beKindOfClass:[NSDate class]];\n                [[subject should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n    });\n\nSPEC_END\n"
  },
  {
    "path": "Test/EscortAmountOfSpecs.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+AZDateBuilder.h\"\n#import \"NSDate+Escort.h\"\n\n@interface NSDate ()\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortOfSpecs)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n    \n    describe(@\"-daysOfMonth\", ^{\n        it(@\"2010-10 is 31 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2010,\n                AZ_DateUnit.month: @10,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfMonth];\n            [[theValue(days) should] equal:theValue(31)];\n        });\n        it(@\"2010-11 is 30 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2010,\n                AZ_DateUnit.month: @11,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfMonth];\n            [[theValue(days) should] equal:theValue(30)];\n        });\n        it(@\"2010-02 is 28 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2010,\n                AZ_DateUnit.month: @2,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfMonth];\n            [[theValue(days) should] equal:theValue(28)];\n        });\n        it(@\"2012-02 is 29 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2012,\n                AZ_DateUnit.month: @2,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfMonth];\n            [[theValue(days) should] equal:theValue(29)];\n        });\n    });\n    \n    describe(@\"-monthsOfYesr\", ^{\n        it(@\"2010 is 12 months\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2010,\n                AZ_DateUnit.month: @10,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate monthsOfYear];\n            [[theValue(days) should] equal:theValue(12)];\n        });\n        it(@\"2011 is 12 months\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2011,\n                AZ_DateUnit.month: @10,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate monthsOfYear];\n            [[theValue(days) should] equal:theValue(12)];\n        });\n    });\n    \n    describe(@\"-daysOfYear\", ^{\n        it(@\"2010 is 365 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2010,\n                AZ_DateUnit.month: @10,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfYear];\n            [[theValue(days) should] equal:theValue(365)];\n        });\n        it(@\"2012 is 366 days\", ^{\n            NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year: @2012,\n                AZ_DateUnit.month: @10,\n                AZ_DateUnit.day: @10,\n            }];\n            \n            NSInteger days = [currentDate daysOfYear];\n            [[theValue(days) should] equal:theValue(366)];\n        });\n    });\n    \n    describe(@\"-hoursOfDay\", ^{\n        context(@\"at japan\", ^{\n            beforeAll(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:@\"JST\"];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n            });\n            it(@\"2012-10-10 is 24 hours\", ^{\n                NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year: @2010,\n                    AZ_DateUnit.month: @10,\n                    AZ_DateUnit.day: @10,\n                }];\n                \n                NSInteger days = [currentDate hoursOfDay];\n                [[theValue(days) should] equal:theValue(24)];\n            });\n            it(@\"2012-10-10 is 24 hours\", ^{\n                NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year: @2012,\n                    AZ_DateUnit.month: @10,\n                    AZ_DateUnit.day: @10,\n                }];\n                \n                NSInteger days = [currentDate hoursOfDay];\n                [[theValue(days) should] equal:theValue(24)];\n            });\n        });\n        context(@\"at united kingdom\", ^{\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithAbbreviation:@\"BST\"];\n                [NSTimeZone stub:@selector(localTimeZone) andReturn:timeZone];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n            });\n            // DST started\n            it(@\"2017-03-26 is 24 hours\", ^{\n                NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year: @2017,\n                    AZ_DateUnit.month: @3,\n                    AZ_DateUnit.day: @26,\n                }];\n                \n                NSInteger days = [currentDate hoursOfDay];\n                [[theValue(days) should] equal:theValue(24)];\n            });\n            // DST end\n            it(@\"2017-10-29 is 24 hours\", ^{\n                NSDate *currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year: @2017,\n                    AZ_DateUnit.month: @10,\n                    AZ_DateUnit.day: @29\n                    ,\n                }];\n                \n                NSInteger days = [currentDate hoursOfDay];\n                [[theValue(days) should] equal:theValue(24)];\n            });\n        });\n    });\nSPEC_END\n"
  },
  {
    "path": "Test/EscortCacheSpec.m",
    "content": "//\n// Created by azu on 2013/06/29.\n//\n\n\n#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n\n@interface NSDate (EscortMock)\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\n/*\n    ``AZ_currentCalendar`` is cached NSCalendar\n    typically used by Decomposing dates property methods.\n */\nSPEC_BEGIN(EscortCache)\n    describe(@\"Decomposing dates\", ^{\n        context(@\"calling from multithread\", ^{\n            it(@\"should not raise\", ^{\n                [[theBlock(^{\n                    NSOperationQueue *queue = [[NSOperationQueue alloc] init];\n                    [queue setMaxConcurrentOperationCount:8];\n                    NSDate *date = [NSDate date];\n                    for (int i = 0; i < 100; i++) {\n                        [queue addOperationWithBlock:^{\n                            NSString *calendarIdentifier = (i%2) ? nil : NSCalendarIdentifierGregorian;\n                            [NSDate AZ_setDefaultCalendarIdentifier:calendarIdentifier];\n                            NSInteger year = date.year;\n                            NSInteger month = date.month;\n                            NSInteger day = date.day;\n                            NSInteger hour = date.hour;\n                            NSInteger minute = date.minute;\n                            NSInteger seconds = date.seconds;\n                            [NSString stringWithFormat:@\"%li-%li-%li %li:%li:%li\", (long)year, (long)month, (long)day, (long)hour, (long)minute, (long)seconds];\n                        }];\n                    }\n                    [queue waitUntilAllOperationsAreFinished];\n                }) shouldNot] raise];\n            });\n        });\n    });\n    SPEC_END"
  },
  {
    "path": "Test/EscortClassSpec.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n#import \"AZNSDateKiwiMatcher.h\"\n#import \"NSDate+AZDateBuilder.h\"\n#import \"FakeDateUtil.h\"\n\n@interface NSDate (EscortMock)\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortClassSpec)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n    describe(@\"+dateTomorrow\", ^{\n        context(@\"when today is new time\", ^{\n            NSDate *currentDate = [NSDate date];\n            beforeEach(^{\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            it(@\"should return tomorrow\", ^{\n                NSDate *expectDate = [currentDate dateByAddingTimeInterval:SECONDS_IN_DAY];\n                NSDate *tomorrow = [NSDate dateTomorrow];\n                [[tomorrow should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n        context(@\"when today is 2015-03-29 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n\n                currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @29,\n                }];\n                [NSDate stub:@selector(date) andReturn:theValue(currentDate)];\n            });\n            it(@\"should return tomorrow\", ^{\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @30,\n                }];\n                NSDate *tomorrow = [NSDate dateTomorrow];\n                [[tomorrow should] equal:expectDate];\n            });\n        });\n    });\n    describe(@\"+dateYesterday\", ^{\n        context(@\"when today is new time\", ^{\n            NSDate *currentDate = [NSDate date];\n            beforeEach(^{\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            it(@\"should return yesterday\", ^{\n                NSDate *expectDate = [currentDate dateByAddingTimeInterval:-SECONDS_IN_DAY];\n                NSDate *yesterday = [NSDate dateYesterday];\n                [[yesterday should] equalToDateIgnoringTime:expectDate];\n            });\n        });\n        context(@\"when today is 2015-03-30 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n\n                currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @30,\n                }];\n                [NSDate stub:@selector(date) andReturn:theValue(currentDate)];\n            });\n            it(@\"should return yesterday\", ^{\n                NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @29,\n                }];\n                NSDate *yesterday = [NSDate dateYesterday];\n                [[yesterday should] equal:expectDate];\n            });\n        });\n    });\n\n    describe(@\"+dateWithDaysFromNow\", ^{\n        context(@\"when today is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 Day\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysFromNow:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[dateWithDaysFromNow should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 Day\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysFromNow:1];\n                });\n                it(@\"should return 2010-10-11\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysFromNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding 10 Day\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysFromNow:10];\n                });\n                it(@\"should return 2010-10-20\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @20,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysFromNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 Day\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysFromNow:-1];\n                });\n                it(@\"should return 2010-10-09\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysFromNow should] equal:expectDate];\n                });\n            });\n        });\n        context(@\"when today is 2015-03-29 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @29,\n                }];\n                [NSDate stub:@selector(date) andReturn:theValue(currentDate)];\n            });\n            context(@\"adding 2 Das\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysFromNow:2];\n                });\n                it(@\"should return tomorrow\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @31,\n                    }];\n                    [[dateWithDaysFromNow should] equal:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"+dateWithDaysBeforeNow\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"before 0 Day\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithDaysBeforeNow:0];\n                });\n                it(@\"should return 2010-10-10\", ^{\n                    [[dateWithDaysBeforeNow should] equal:currentDate];\n                });\n            });\n            context(@\"before 1 Day\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithDaysBeforeNow:1];\n                });\n                it(@\"should return 2010-10-09\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"before 5 Day\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithDaysBeforeNow:5];\n                });\n                it(@\"should return 2010-10-05\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @5,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"before -1 Day\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithDaysBeforeNow:-1];\n                });\n                it(@\"should return 2010-10-11\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n        });\n        context(@\"when today is 2015-03-30 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @30,\n                }];\n                [NSDate stub:@selector(date) andReturn:theValue(currentDate)];\n            });\n            context(@\"before 2 Days\", ^{\n                __block NSDate *dateWithDaysFromNow;\n                beforeEach(^{\n                    dateWithDaysFromNow = [NSDate dateWithDaysBeforeNow:2];\n                });\n                it(@\"should return tomorrow\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2015,\n                        AZ_DateUnit.month : @3,\n                        AZ_DateUnit.day : @28,\n                    }];\n                    [[dateWithDaysFromNow should] equal:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"+dateWithHoursFromNow\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursFromNow:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[dateWithDaysBeforeNow should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursFromNow:1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding 24 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursFromNow:24];\n                });\n                it(@\"should return 2010-10-11 10:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @11,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursFromNow:-1];\n                });\n                it(@\"should return 2010-10-10 09:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @9,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n        });\n    });\n    describe(@\"+dateWithHoursBeforeNow\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"subtract 0 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursBeforeNow:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[dateWithDaysBeforeNow should] equal:currentDate];\n                });\n            });\n            context(@\"subtract 1 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursBeforeNow:1];\n                });\n                it(@\"should return 2010-10-10 10:09:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @9,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"subtract 24 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursBeforeNow:24];\n                });\n                it(@\"should return 2010-10-09 10:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @9,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"subtract -1 hour\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithHoursBeforeNow:-1];\n                });\n                it(@\"should return 2010-10-10 11:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n        });\n    });\n\n    describe(@\"+dateWithMinutesFromNow:\", ^{\n        context(@\"when the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"adding 0 minute\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithMinutesFromNow:0];\n                });\n                it(@\"should return same date\", ^{\n                    [[dateWithDaysBeforeNow should] equal:currentDate];\n                });\n            });\n            context(@\"adding 1 minute\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithMinutesFromNow:1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @11,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding 60 minute\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithMinutesFromNow:60];\n                });\n                it(@\"should return 2010-10-10 11:10:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @11,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n            context(@\"adding -1 minute\", ^{\n                __block NSDate *dateWithDaysBeforeNow;\n                beforeEach(^{\n                    dateWithDaysBeforeNow = [NSDate dateWithMinutesFromNow:-1];\n                });\n                it(@\"should return 2010-10-10 10:11:10\", ^{\n                    NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @9,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [[dateWithDaysBeforeNow should] equal:expectDate];\n                });\n            });\n        });\n\n        describe(@\"+dateWithMinutesBeforeNow:\", ^{\n            context(@\"when the date is 2010-10-10 10:10:10\", ^{\n                __block NSDate *currentDate;\n                beforeEach(^{\n                    currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                        AZ_DateUnit.hour : @10,\n                        AZ_DateUnit.minute : @10,\n                        AZ_DateUnit.second : @10,\n                    }];\n                    [FakeDateUtil stubCurrentDate:currentDate];\n                });\n                context(@\"subtract 0 minute\", ^{\n                    __block NSDate *dateWithDaysBeforeNow;\n                    beforeEach(^{\n                        dateWithDaysBeforeNow = [NSDate dateWithMinutesBeforeNow:0];\n                    });\n                    it(@\"should return same date\", ^{\n                        [[dateWithDaysBeforeNow should] equal:currentDate];\n                    });\n                });\n                context(@\"subtract 1 minute\", ^{\n                    __block NSDate *dateWithDaysBeforeNow;\n                    beforeEach(^{\n                        dateWithDaysBeforeNow = [NSDate dateWithMinutesBeforeNow:1];\n                    });\n                    it(@\"should return 2010-10-10 10:09:10\", ^{\n                        NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @2010,\n                            AZ_DateUnit.month : @10,\n                            AZ_DateUnit.day : @10,\n                            AZ_DateUnit.hour : @10,\n                            AZ_DateUnit.minute : @9,\n                            AZ_DateUnit.second : @10,\n                        }];\n                        [[dateWithDaysBeforeNow should] equal:expectDate];\n                    });\n                });\n                context(@\"subtract 60 minute\", ^{\n                    __block NSDate *dateWithDaysBeforeNow;\n                    beforeEach(^{\n                        dateWithDaysBeforeNow = [NSDate dateWithMinutesBeforeNow:60];\n                    });\n                    it(@\"should return 2010-10-10 09:10:10\", ^{\n                        NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @2010,\n                            AZ_DateUnit.month : @10,\n                            AZ_DateUnit.day : @10,\n                            AZ_DateUnit.hour : @9,\n                            AZ_DateUnit.minute : @10,\n                            AZ_DateUnit.second : @10,\n                        }];\n                        [[dateWithDaysBeforeNow should] equal:expectDate];\n                    });\n                });\n                context(@\"subtract -1 minute\", ^{\n                    __block NSDate *dateWithDaysBeforeNow;\n                    beforeEach(^{\n                        dateWithDaysBeforeNow = [NSDate dateWithMinutesBeforeNow:-1];\n                    });\n                    it(@\"should return 2010-10-10 11:11:10\", ^{\n                        NSDate *expectDate = [NSDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @2010,\n                            AZ_DateUnit.month : @10,\n                            AZ_DateUnit.day : @10,\n                            AZ_DateUnit.hour : @10,\n                            AZ_DateUnit.minute : @11,\n                            AZ_DateUnit.second : @10,\n                        }];\n                        [[dateWithDaysBeforeNow should] equal:expectDate];\n                    });\n                });\n            });\n        });\n    });\n\n    SPEC_END\n"
  },
  {
    "path": "Test/EscortComparingSpec.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n#import \"FakeDateUtil.h\"\n#import \"NSDate+AZDateBuilder.h\"\n\n@interface NSDate ()\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortComparingSpec)\n\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n    describe(@\"-isEqualToDateIgnoringTime\", ^{\n        NSDate *currentDate = [NSDate date];\n        beforeEach(^{\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same the date\", ^{\n            it(@\"should be true\", ^{\n                BOOL isMatch = [currentDate isEqualToDateIgnoringTime:currentDate];\n                [[theValue(isMatch) should] beYes];\n            });\n\n        });\n        context(@\"when target is today\", ^{\n            it(@\"should be true\", ^{\n                NSDate *beginOfDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                NSDate *endOfDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n                BOOL isMatch_begin = [beginOfDate isEqualToDateIgnoringTime:currentDate];\n                BOOL isMatch_end = [endOfDate isEqualToDateIgnoringTime:currentDate];\n                [[theValue(isMatch_begin) should] beYes];\n                [[theValue(isMatch_end) should] beYes];\n            });\n        });\n        context(@\"when target is a later day\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] + 1),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isEqualToDateIgnoringTime:currentDate];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n        context(@\"when target is a earler day\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] - 1),\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n                BOOL isMatch = [laterDate isEqualToDateIgnoringTime:currentDate];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n        context(@\"when target is previous era\", ^{\n            __block NSDate *currentDate;\n            __block NSDate *previousEraDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2014,\n                        AZ_DateUnit.month : @5,\n                        AZ_DateUnit.day : @19,\n                }];\n                previousEraDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @1951,\n                        AZ_DateUnit.month : @5,\n                        AZ_DateUnit.day : @19,\n                }];\n\n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            it(@\"should be false\", ^{\n                BOOL isMatch = [previousEraDate isEqualToDateIgnoringTime:currentDate];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isToday\", ^{\n        NSDate *currentDate = [NSDate date];\n        beforeEach(^{\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when suject is same date\", ^{\n            it(@\"should be true\", ^{\n                BOOL match = [currentDate isToday];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when subject is a later day\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] + 1),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isToday];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n        context(@\"when subject is a earler day\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] - 1),\n                    AZ_DateUnit.hour : @23,\n                    AZ_DateUnit.minute : @59,\n                    AZ_DateUnit.second : @59,\n                }];\n                BOOL isMatch = [laterDate isToday];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isTomorrow\", ^{\n        NSDate *currentDate = [NSDate date];\n        beforeEach(^{\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when suject is same date\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isTomorrow];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when subject is a tomorrow\", ^{\n            it(@\"should be true\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] + 1),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isTomorrow];\n                [[theValue(isMatch) should] beYes];\n            });\n        });\n        context(@\"when subject is 2day later\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] + 2),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isTomorrow];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isYesterday\", ^{\n        NSDate *currentDate = [NSDate date];\n        beforeEach(^{\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when suject is same date\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isYesterday];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when subject is a yesterday\", ^{\n            it(@\"should be true\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] - 1),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isYesterday];\n                [[theValue(isMatch) should] beYes];\n            });\n        });\n        context(@\"when subject is 2day ago\", ^{\n            it(@\"should be false\", ^{\n                NSDate *laterDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.day : @([currentDate day] - 2),\n                    AZ_DateUnit.hour : @0,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n                BOOL isMatch = [laterDate isYesterday];\n                [[theValue(isMatch) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isSameWeekAsDate\", ^{\n        context(@\"today is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"same week\", ^{\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"next day (monday)\", ^{\n                context(@\"firstWeekday is sunday\", ^{\n                    beforeEach(^{\n                        NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                        beginingOfMondayCalendar.firstWeekday = 1;\n                        [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match = [currentDate isSameWeekAsDate:[currentDate dateByAddingDays:1]];\n                        [[theValue(match) should] beYes];\n                    });\n                });\n                context(@\"firstWeekday is monday\", ^{\n                    beforeEach(^{\n                        NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                        beginingOfMondayCalendar.firstWeekday = 2;\n                        [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match = [currentDate isSameWeekAsDate:[currentDate dateByAddingDays:1]];\n                        [[theValue(match) should] beNo];\n                    });\n                });\n            });\n            context(@\"within this week\", ^{\n                // weekday 1...7\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                context(@\"firstOfWeek\", ^{\n                    __block NSDate *firstOfWeek;\n                    beforeEach(^{\n                        firstOfWeek = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.day : @([currentDate firstDayOfWeekday])\n                        }];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match_first = [firstOfWeek isSameWeekAsDate:currentDate];\n                        [[theValue(match_first) should] beYes];\n                    });\n                });\n                context(@\"endOfWeek\", ^{\n                    __block NSDate *lastOfWeek;\n                    beforeEach(^{\n                        lastOfWeek = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.day : @([currentDate lastDayOfWeekday])\n                        }];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match_last = [lastOfWeek isSameWeekAsDate:currentDate];\n                        [[theValue(match_last) should] beYes];\n                    });\n                });\n            });\n            context(@\"when same the week, but difference year\", ^{\n                __block NSDate *nextYearDate;\n                beforeEach(^{\n                    nextYearDate = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @([currentDate year] + 1),\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [nextYearDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next week\", ^{\n                __block NSDate *nextWeekDate;\n                beforeEach(^{\n                    nextWeekDate = [currentDate dateByAddingDays:DAYS_IN_WEEK];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [nextWeekDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last week\", ^{\n                __block NSDate *prevWeekDate;\n                beforeEach(^{\n                    prevWeekDate = [currentDate dateBySubtractingDays:DAYS_IN_WEEK];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [prevWeekDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is 2015-03-30\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @30,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"same week\", ^{\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"within this week\", ^{\n                // weekday 1...7\n                context(@\"firstOfWeek\", ^{\n                    __block NSDate *firstOfWeek;\n                    beforeEach(^{\n                        firstOfWeek = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.day : @([currentDate firstDayOfWeekday])\n                        }];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match_first = [firstOfWeek isSameWeekAsDate:currentDate];\n                        [[theValue(match_first) should] beYes];\n                    });\n                });\n                context(@\"endOfWeek\", ^{\n                    __block NSDate *lastOfWeek;\n                    beforeEach(^{\n                        lastOfWeek = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.month : @4,\n                            AZ_DateUnit.day : @4,\n                        }];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match_last = [lastOfWeek isSameWeekAsDate:currentDate];\n                        [[theValue(match_last) should] beYes];\n                    });\n                });\n            });\n            context(@\"when same the week, but difference year\", ^{\n                __block NSDate *nextYearDate;\n                beforeEach(^{\n                    nextYearDate = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @([currentDate year] + 1),\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [nextYearDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next week\", ^{\n                __block NSDate *nextWeekDate;\n                beforeEach(^{\n                    nextWeekDate = [currentDate dateByAddingDays:DAYS_IN_WEEK];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [nextWeekDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last week\", ^{\n                __block NSDate *prevWeekDate;\n                beforeEach(^{\n                    prevWeekDate = [currentDate dateBySubtractingDays:DAYS_IN_WEEK];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [prevWeekDate isSameWeekAsDate:currentDate];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n    });\n    describe(@\"-isThisWeek\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"same week\", ^{\n            it(@\"should be true\", ^{\n                BOOL match = [currentDate isThisWeek];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"next day (monday)\", ^{\n            context(@\"firstWeekday is sunday\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameWeekAsDate:[currentDate dateByAddingDays:1]];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"firstWeekday is monday\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameWeekAsDate:[currentDate dateByAddingDays:1]];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"within this week\", ^{\n            context(@\"firstOfWeek\", ^{\n                it(@\"should be true\", ^{\n                    // weekday 1...7\n                    NSDate *firstOfWeek = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.day : @([currentDate firstDayOfWeekday])\n                    }];\n                    BOOL match_first = [firstOfWeek isThisWeek];\n                    [[theValue(match_first) should] beYes];\n                });\n            });\n            context(@\"endOfWeek\", ^{\n                it(@\"should be true\", ^{\n                    NSDate *lastOfWeek = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.day : @([currentDate lastDayOfWeekday])\n                    }];\n                    BOOL match_last = [lastOfWeek isThisWeek];\n                    [[theValue(match_last) should] beYes];\n                });\n            });\n        });\n        context(@\"next week\", ^{\n            __block NSDate *nextWeekDate;\n            beforeEach(^{\n                nextWeekDate = [currentDate dateByAddingDays:DAYS_IN_WEEK];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [nextWeekDate isThisWeek];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"last week\", ^{\n            __block NSDate *prevWeekDate;\n            beforeEach(^{\n                prevWeekDate = [currentDate dateBySubtractingDays:DAYS_IN_WEEK];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [prevWeekDate isThisWeek];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isNextWeek\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"within this week\", ^{\n            context(@\"at endOfWeek\", ^{\n                it(@\"should be false\", ^{\n                    NSDate *endOfWeek = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.day : @([currentDate lastDayOfWeekday])\n                    }];\n                    BOOL match = [endOfWeek isNextWeek];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"next week\", ^{\n            __block NSDate *nextWeekDate;\n            beforeEach(^{\n                nextWeekDate = [currentDate dateByAddingDays:DAYS_IN_WEEK];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [nextWeekDate isNextWeek];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"two weeks later\", ^{\n            __block NSDate *nextWeekDate;\n            beforeEach(^{\n                nextWeekDate = [currentDate dateByAddingDays:DAYS_IN_WEEK * 2];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [nextWeekDate isNextWeek];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isLastWeek\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @9,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"within this week\", ^{\n            context(@\"at startOfWeek\", ^{\n                it(@\"should be false\", ^{\n                    NSDate *lastOfWeek = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.day : @([currentDate firstDayOfWeekday])\n                    }];\n                    BOOL match = [lastOfWeek isLastWeek];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"when last week\", ^{\n            __block NSDate *prevWeekDate;\n            beforeEach(^{\n                prevWeekDate = [currentDate dateBySubtractingDays:DAYS_IN_WEEK];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [prevWeekDate isLastWeek];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when two weeks ago\", ^{\n            __block NSDate *prevWeekDate;\n            beforeEach(^{\n                prevWeekDate = [currentDate dateBySubtractingDays:DAYS_IN_WEEK * 2];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [prevWeekDate isLastWeek];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isSameMonthAsDate\", ^{\n        context(@\"today is 2010-10-10 \", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"within this month\", ^{\n                context(@\"at start of month\", ^{\n                    it(@\"should be yes\", ^{\n                        NSDate *startOfMonth = [currentDate dateAtStartOfMonth];\n                        BOOL match = [currentDate isSameMonthAsDate:startOfMonth];\n                        [[theValue(match) should] beYes];\n                    });\n                });\n            });\n            context(@\"next month\", ^{\n                __block NSDate *nextMonth;\n                beforeEach(^{\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.month = 1;\n                    nextMonth = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isSameMonthAsDate:nextMonth];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last month\", ^{\n                __block NSDate *lastMonth;\n                beforeEach(^{\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.month = -1;\n                    lastMonth = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isSameMonthAsDate:lastMonth];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next year\", ^{\n                __block NSDate *nextYear;\n                beforeEach(^{\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.year = 1;\n                    nextYear = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isSameMonthAsDate:nextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is 1988-12-07 \", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @6,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n\n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            context(@\"2 days ago\", ^{\n                __block NSDate *_2daysAgo;\n                beforeEach(^{\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.day = 2;\n                    _2daysAgo = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameMonthAsDate:_2daysAgo];\n                    [[theValue(match) should] beYes];\n                });\n            });\n        });\n        context(@\"today is 2010-02-13\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                // date at end of year in Chinese\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @2,\n                    AZ_DateUnit.day : @13,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n                \n                NSCalendar *chineseCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:chineseCalendar];\n            });\n            context(@\"1 days ago\", ^{\n                __block NSDate *_1daysAgo;\n                beforeEach(^{\n                    // date at start of year in Chinese\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.day = 1;\n                    _1daysAgo = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameYearAsDate:_1daysAgo];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n    });\n    describe(@\"-isThisMonth\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when sameMonth as Date\", ^{\n            it(@\"should be true\", ^{\n                BOOL match = [currentDate isThisMonth];\n                [[theValue(match) should] beYes];\n            });\n        });\n    });\n    describe(@\"-isSameYearAsDate\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"within this year\", ^{\n            context(@\"today is date\", ^{\n                context(@\"at start of year\", ^{\n                    __block NSDate *startOfYear;\n                    beforeEach(^{\n                        startOfYear = [currentDate dateAtStartOfYear];\n                    });\n                    it(@\"should be yes\", ^{\n                        BOOL match = [currentDate isSameYearAsDate:startOfYear];\n                        [[theValue(match) should] beYes];\n                    });\n                });\n            });\n            context(@\"today is 1988-12-07 \", ^{\n                __block NSDate *currentDate;\n                beforeEach(^{\n                    currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @1989,\n                        AZ_DateUnit.month : @1,\n                        AZ_DateUnit.day : @6,\n                    }];\n                    [FakeDateUtil stubCurrentDate:currentDate];\n                    \n                    NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n                });\n                context(@\"2 days ago\", ^{\n                    __block NSDate *_2daysAgo;\n                    beforeEach(^{\n                        NSCalendar *calendar = [NSCalendar currentCalendar];\n                        NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                        oneMonthComponents.day = 2;\n                        _2daysAgo = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                    });\n                    it(@\"should be true\", ^{\n                        BOOL match = [currentDate isSameYearAsDate:_2daysAgo];\n                        [[theValue(match) should] beYes];\n                    });\n                });\n            });\n        });\n        context(@\"last year\", ^{\n            __block NSDate *lastYear;\n            beforeEach(^{\n                NSCalendar *calendar = [NSCalendar currentCalendar];\n                NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                oneMonthComponents.year = -1;\n                lastYear = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isSameYearAsDate:lastYear];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"next year\", ^{\n            __block NSDate *nextYear;\n            beforeEach(^{\n                NSCalendar *calendar = [NSCalendar currentCalendar];\n                NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                oneMonthComponents.year = 1;\n                nextYear = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isSameYearAsDate:nextYear];\n                [[theValue(match) should] beNo];\n            });\n        });\n        \n        context(@\"today is 2010-02-13\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                // date at end of year in Chinese\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @2,\n                    AZ_DateUnit.day : @13,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n                \n                NSCalendar *chineseCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierChinese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:chineseCalendar];\n            });\n            context(@\"1 days ago\", ^{\n                __block NSDate *_1daysAgo;\n                beforeEach(^{\n                    // date at start of year in Chinese\n                    NSCalendar *calendar = [NSCalendar currentCalendar];\n                    NSDateComponents *oneMonthComponents = [[NSDateComponents alloc] init];\n                    oneMonthComponents.day = 1;\n                    _1daysAgo = [calendar dateByAddingComponents:oneMonthComponents toDate:currentDate options:0];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [currentDate isSameMonthAsDate:_1daysAgo];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n    });\n    describe(@\"-isThisYear\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"within this year\", ^{\n            it(@\"should be true\", ^{\n                BOOL match = [currentDate isThisYear];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"other year\", ^{\n            __block NSDate *otherYearDate;\n            beforeEach(^{\n                NSInteger currentYear = [currentDate year];\n                otherYearDate = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @(currentYear + 10)\n                }];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [otherYearDate isThisYear];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isNextYear\", ^{\n        context(@\"today is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next year\", ^{\n                __block NSDate *nextYear;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    nextYear = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @(currentYear + 1)\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [nextYear isNextYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"one years later\", ^{\n                __block NSDate *twoYearsLater;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    twoYearsLater = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @(currentYear + 2)\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsLater isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is BC 10-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @-10,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next year\", ^{\n                __block NSDate *nextYear;\n                beforeEach(^{\n                    nextYear = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @-9\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [nextYear isNextYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"last year\", ^{\n                __block NSDate *lastYear;\n                beforeEach(^{\n                    lastYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @-11\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [lastYear isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"two years later\", ^{\n                __block NSDate *twoYearsLater;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    twoYearsLater = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @(currentYear + 2)\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsLater isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is 1989-01-06 and not Gregorian\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @6,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n\n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"2 days laster\", ^{\n                __block NSDate *_2daysAgo;\n                beforeEach(^{\n                    _2daysAgo = [currentDate dateByAddingDays:2];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [_2daysAgo isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next year\", ^{\n                __block NSDate *nextYear;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    nextYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @(currentYear + 1)\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [nextYear isNextYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"two years later\", ^{\n                __block NSDate *twoYearsLater;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    twoYearsLater = [currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.year : @(currentYear + 2)\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsLater isNextYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n    });\n    describe(@\"-isLastYear\", ^{\n        context(@\"today is 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last year\", ^{\n                __block NSDate *lastYear;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    lastYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @(currentYear - 1)\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [lastYear isLastYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"two years ago\", ^{\n                __block NSDate *twoYearsAgo;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    twoYearsAgo = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @(currentYear - 2)\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsAgo isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is BC 10-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @-10,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"next year\", ^{\n                __block NSDate *nextYear;\n                beforeEach(^{\n                    nextYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @-9\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [nextYear isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last year\", ^{\n                __block NSDate *lastYear;\n                beforeEach(^{\n                    lastYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @-11\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [lastYear isLastYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"two years ago\", ^{\n                __block NSDate *twoYearsAgo;\n                beforeEach(^{\n                    twoYearsAgo = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @-12\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsAgo isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n        context(@\"today is 1989-01-08 and not Gregorian\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1989,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @8,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n                \n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            context(@\"this week\", ^{\n                it(@\"should be false\", ^{\n                    BOOL match = [currentDate isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"2 days ago\", ^{\n                __block NSDate *_2daysAgo;\n                beforeEach(^{\n                    _2daysAgo = [currentDate dateBySubtractingDays:2];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [_2daysAgo isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n            context(@\"last year\", ^{\n                __block NSDate *lastYear;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    lastYear = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @(currentYear - 1)\n                    }];\n                });\n                it(@\"should be true\", ^{\n                    BOOL match = [lastYear isLastYear];\n                    [[theValue(match) should] beYes];\n                });\n            });\n            context(@\"two years ago\", ^{\n                __block NSDate *twoYearsAgo;\n                beforeEach(^{\n                    NSInteger currentYear = [currentDate gregorianYear];\n                    twoYearsAgo = [currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @(currentYear + 2)\n                    }];\n                });\n                it(@\"should be false\", ^{\n                    BOOL match = [twoYearsAgo isLastYear];\n                    [[theValue(match) should] beNo];\n                });\n            });\n        });\n    });\n    describe(@\"-isEarlierThanDate\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isEarlierThanDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when earlier date\", ^{\n            __block NSDate *earlierDate;\n            beforeEach(^{\n                earlierDate = [currentDate dateByAddingTimeInterval:-1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [earlierDate isEarlierThanDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when later date\", ^{\n            __block NSDate *laterDate;\n            beforeEach(^{\n                laterDate = [currentDate dateByAddingTimeInterval:1];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [laterDate isEarlierThanDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isLaterThanDate\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isLaterThanDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when earlier date\", ^{\n            __block NSDate *earlierDate;\n            beforeEach(^{\n                earlierDate = [currentDate dateByAddingTimeInterval:-1];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [earlierDate isLaterThanDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when later date\", ^{\n            __block NSDate *laterDate;\n            beforeEach(^{\n                laterDate = [currentDate dateByAddingTimeInterval:1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [laterDate isLaterThanDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n    });\n    describe(@\"-isEarlierThanOrEqualDate\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isEarlierThanOrEqualDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when earlier date\", ^{\n            __block NSDate *earlierDate;\n            beforeEach(^{\n                earlierDate = [currentDate dateByAddingTimeInterval:-1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [earlierDate isEarlierThanOrEqualDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when later date\", ^{\n            __block NSDate *laterDate;\n            beforeEach(^{\n                laterDate = [currentDate dateByAddingTimeInterval:1];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [laterDate isEarlierThanOrEqualDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n    });\n    describe(@\"-isLaterThanOrEqualDate\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be true\", ^{\n                BOOL match = [currentDate isLaterThanOrEqualDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when earlier date\", ^{\n            __block NSDate *earlierDate;\n            beforeEach(^{\n                earlierDate = [currentDate dateByAddingTimeInterval:-1];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [earlierDate isLaterThanOrEqualDate:currentDate];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when later date\", ^{\n            __block NSDate *laterDate;\n            beforeEach(^{\n                laterDate = [currentDate dateByAddingTimeInterval:1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [laterDate isLaterThanOrEqualDate:currentDate];\n                [[theValue(match) should] beYes];\n            });\n        });\n    });\n    describe(@\"-isInPast\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isInPast];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when earlier date\", ^{\n            __block NSDate *earlierDate;\n            beforeEach(^{\n                earlierDate = [currentDate dateByAddingTimeInterval:-1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [earlierDate isInPast];\n                [[theValue(match) should] beYes];\n            });\n        });\n    });\n\n    describe(@\"-isInFuture\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n                AZ_DateUnit.hour : @10,\n                AZ_DateUnit.minute : @10,\n                AZ_DateUnit.second : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when same time\", ^{\n            it(@\"should be false\", ^{\n                BOOL match = [currentDate isInFuture];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when later date\", ^{\n            __block NSDate *laterDate;\n            beforeEach(^{\n                laterDate = [currentDate dateByAddingTimeInterval:1];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [laterDate isInFuture];\n                [[theValue(match) should] beYes];\n            });\n        });\n    });\n    SPEC_END\n"
  },
  {
    "path": "Test/EscortDateRoles.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n#import \"NSDate+AZDateBuilder.h\"\n#import \"FakeDateUtil.h\"\n\n@interface NSDate (EscortMock)\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortDateRoles)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n    describe(@\"-isTypicallyWorkday\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when Workday is first\", ^{\n            __block NSDate *firstDayOfWeek;\n            beforeEach(^{\n                firstDayOfWeek = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.weekday : @1,\n                }];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [firstDayOfWeek isTypicallyWorkday];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when Workday is last\", ^{\n            __block NSDate *lastDayOfWeek;\n            beforeEach(^{\n                lastDayOfWeek = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.weekday : @7,\n                }];\n            });\n            it(@\"should be false\", ^{\n                BOOL match = [lastDayOfWeek isTypicallyWorkday];\n                [[theValue(match) should] beNo];\n            });\n        });\n        context(@\"when Workday is typically workday\", ^{\n            __block NSRange weekdayRange;\n            beforeEach(^{\n                NSCalendar *calendar = [NSCalendar currentCalendar];\n                weekdayRange = [calendar maximumRangeOfUnit:NSCalendarUnitWeekday];\n            });\n            it(@\"should be true\", ^{\n                NSDate *checkDate;\n                NSUInteger length = weekdayRange.location + weekdayRange.length - 1;\n                for (NSUInteger weekday = weekdayRange.location + 1; weekday < length; weekday++) {\n                    checkDate = [[currentDate AZ_dateByUnit:@{\n                        AZ_DateUnit.weekday : @1,\n                    }] dateByAddingDays:weekday - 1];\n                    BOOL match = [checkDate isTypicallyWorkday];\n                    [[theValue(match) should] beTrue];\n                }\n            });\n        });\n    });\n    describe(@\"-isTypicallyWeekend\", ^{\n        __block NSDate *currentDate;\n        beforeEach(^{\n            currentDate = [NSDate AZ_dateByUnit:@{\n                AZ_DateUnit.year : @2010,\n                AZ_DateUnit.month : @10,\n                AZ_DateUnit.day : @10,\n            }];\n            [FakeDateUtil stubCurrentDate:currentDate];\n        });\n        context(@\"when Weekday is first\", ^{\n            __block NSDate *firstDayOfWeek;\n            beforeEach(^{\n                firstDayOfWeek = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.weekday : @1\n                }];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [firstDayOfWeek isTypicallyWeekend];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when Weekday is last\", ^{\n            __block NSDate *lastDayOfWeek;\n            beforeEach(^{\n                lastDayOfWeek = [currentDate AZ_dateByUnit:@{\n                    AZ_DateUnit.weekday : @7\n                }];\n            });\n            it(@\"should be true\", ^{\n                BOOL match = [lastDayOfWeek isTypicallyWeekend];\n                [[theValue(match) should] beYes];\n            });\n        });\n        context(@\"when Weekday is typically workday\", ^{\n            __block NSRange weekdayRange;\n            beforeEach(^{\n                NSCalendar *calendar = [NSCalendar currentCalendar];\n                weekdayRange = [calendar maximumRangeOfUnit:NSCalendarUnitWeekday];\n            });\n            it(@\"should be true\", ^{\n                NSDate *checkDate;\n                NSUInteger length = weekdayRange.location + weekdayRange.length - 1;\n                for (NSUInteger weekday = weekdayRange.location + 1; weekday < length; weekday++) {\n                    checkDate = [[currentDate AZ_dateByUnit:@{\n                            AZ_DateUnit.weekday : @1,\n                    }] dateByAddingDays:weekday - 1];\n                    BOOL match = [checkDate isTypicallyWeekend];\n                    [[theValue(match) should] beNo];\n                }\n            });\n        });\n    });\n    SPEC_END\n"
  },
  {
    "path": "Test/EscortDecomposingSpec.m",
    "content": "#import \"Kiwi.h\"\n#import \"NSDate+Escort.h\"\n#import \"NSDate+AZDateBuilder.h\"\n\n@interface NSDate ()\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortDecomposingSpec)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n    describe(@\"-nearestHour\", ^{\n        context(@\"when 10:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @0,\n                    AZ_DateUnit.second : @0,\n                }];\n            });\n            it(@\"should return 10\", ^{\n                NSInteger nearestHour = [currentDate nearestHour];\n                [[theValue(nearestHour) should] equal:theValue(10)];\n            });\n        });\n        context(@\"when 10:29:59\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @29,\n                    AZ_DateUnit.second : @59,\n                }];\n            });\n            it(@\"should return 10\", ^{\n                NSInteger nearestHour = [currentDate nearestHour];\n                [[theValue(nearestHour) should] equal:theValue(10)];\n            });\n        });\n        context(@\"when 10:30:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @30,\n                    AZ_DateUnit.second : @0,\n                }];\n            });\n            it(@\"should return 11\", ^{\n                NSInteger nearestHour = [currentDate nearestHour];\n                [[theValue(nearestHour) should] equal:theValue(11)];\n            });\n        });\n    });\n    describe(@\"-hour\", ^{\n        context(@\"when the date is 01:02:03\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @1,\n                    AZ_DateUnit.minute : @2,\n                    AZ_DateUnit.second : @3,\n                }];\n            });\n            it(@\"should return 1\", ^{\n                NSInteger hour = [currentDate hour];\n                [[theValue(hour) should] equal:theValue(1)];\n            });\n        });\n    });\n    describe(@\"-minute\", ^{\n        context(@\"when the date is 01:02:03\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @1,\n                    AZ_DateUnit.minute : @2,\n                    AZ_DateUnit.second : @3,\n                }];\n            });\n            it(@\"should return 2\", ^{\n                NSInteger minute = [currentDate minute];\n                [[theValue(minute) should] equal:theValue(2)];\n            });\n        });\n    });\n    describe(@\"-seconds\", ^{\n        context(@\"when the date is 01:02:03\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @1,\n                    AZ_DateUnit.minute : @2,\n                    AZ_DateUnit.second : @3,\n                }];\n            });\n            it(@\"should return 3\", ^{\n                NSInteger seconds = [currentDate seconds];\n                [[theValue(seconds) should] equal:theValue(3)];\n            });\n        });\n    });\n    describe(@\"-day\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return 10\", ^{\n                NSInteger day = [currentDate day];\n                [[theValue(day) should] equal:theValue(10)];\n            });\n        });\n    });\n    describe(@\"-month\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return 10\", ^{\n                NSInteger month = [currentDate month];\n                [[theValue(month) should] equal:theValue(10)];\n            });\n        });\n    });\n    describe(@\"-week\", ^{\n        context(@\"when the date 2010-01-01\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n            });\n            it(@\"should return 1\", ^{\n                NSInteger weekValue = [currentDate week];\n                [[theValue(weekValue) should] equal:theValue(1)];\n            });\n        });\n    });\n    describe(@\"-weekday\", ^{\n        // unfortunately NSCalendar$setFirstWeekday is not configurable...\n        context(@\"when the date 2010-01-01(Fri)\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @1,\n                    AZ_DateUnit.day : @1,\n                }];\n            });\n            it(@\"should return 6\", ^{\n                NSInteger weekdayValue = [currentDate weekday];\n                [[theValue(weekdayValue) should] equal:theValue(6)];\n            });\n        });\n    });\n\n    describe(@\"-nthWeekday\", ^{\n        context(@\"when the date 2010-10-10(2th weekday)\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return 2\", ^{\n                NSInteger nthWeekday = [currentDate nthWeekday];\n                [[theValue(nthWeekday) should] equal:theValue(2)];\n            });\n        });\n    });\n    describe(@\"-firstDayOfWeekday\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(10)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 4\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(4)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-11\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @11,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(10)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 11\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(11)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-15\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @15,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(10)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 11\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(11)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-16\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @16,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(10)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger firstDayOfWeekday = [currentDate firstDayOfWeekday];\n                    [[theValue(firstDayOfWeekday) should] equal:theValue(11)];\n                });\n            });\n        });\n    });\n    describe(@\"-lastDayOfWeekday\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(16)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 4\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(10)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-11\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @11,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(16)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 11\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(17)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-15\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @15,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(16)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 11\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(17)];\n                });\n            });\n        });\n        context(@\"when the date 2010-10-16\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @16,// weekday is 1\n                }];\n            });\n            context(@\"begining of sunday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 1;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(16)];\n                });\n            });\n            context(@\"begining of monday for weekady\", ^{\n                beforeEach(^{\n                    NSCalendar *beginingOfMondayCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierGregorian];\n                    beginingOfMondayCalendar.firstWeekday = 2;\n                    [NSDate stub:@selector(AZ_currentCalendar) andReturn:beginingOfMondayCalendar];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger lastDayOfWeekday = [currentDate lastDayOfWeekday];\n                    [[theValue(lastDayOfWeekday) should] equal:theValue(17)];\n                });\n            });\n        });\n    });\n    describe(@\"-year\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return 2010\", ^{\n                NSInteger yearValue = [currentDate year];\n\n                NSCalendar *c = [NSCalendar currentCalendar];\n                if ([c.calendarIdentifier isEqualToString:NSCalendarIdentifierGregorian]) {\n                    [[theValue(yearValue) should] equal:theValue(2010)];\n                } else if ([c.calendarIdentifier isEqualToString:NSCalendarIdentifierJapanese]) {\n                    [[theValue(yearValue) should] equal:theValue(22)];\n                } else {\n                    [[theValue(yearValue) shouldNot] equal:theValue(2010)];\n                    [[theValue(yearValue) shouldNot] equal:theValue(22)];\n                }\n            });\n        });\n        context(@\"when the calendar is not Gregorian\", ^{\n            __block NSCalendar *jaCalendar;\n            beforeEach(^{\n                // +currentCalendar overwrite NSCalendarIdentifierJapanese.\n                jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            context(@\"simple compere\", ^{\n                __block NSDate *currentDate;\n                __block NSDate *expectedDate;\n                beforeEach(^{\n                    expectedDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @2010,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                    }];\n\n                    NSDateComponents *dateComponents = [[NSDateComponents alloc] init];\n                    dateComponents.year = 22;\n                    dateComponents.month = 10;\n                    dateComponents.day = 10;\n                    currentDate = [jaCalendar dateFromComponents:dateComponents];\n                });\n                it(@\"should return 22\", ^{\n                    NSInteger yearValue = [currentDate year];\n                    [[theValue(yearValue) should] equal:theValue(22)];\n                });\n                it(@\"the date equal to 2010-10-10\", ^{\n                    [[currentDate should] equal:expectedDate];\n                });\n            });\n            context(@\"when Shouwa era\", ^{\n                __block NSDate *currentDate;\n                beforeEach(^{\n                    currentDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @1988,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                    }];\n                });\n                it(@\"should return 63\", ^{\n                    NSInteger yearValue = [currentDate year];\n                    [[theValue(yearValue) should] equal:theValue(63)];\n                });\n            });\n        });\n    });\n\n    describe(@\"-gregorianYear\", ^{\n        context(@\"when the date 2010-10-10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n            });\n            it(@\"should return 2010\", ^{\n                NSInteger yearValue = [currentDate year];\n\n                NSCalendar *c = [NSCalendar currentCalendar];\n                if ([c.calendarIdentifier isEqualToString:NSCalendarIdentifierGregorian]) {\n                    [[theValue(yearValue) should] equal:theValue(2010)];\n                } else if ([c.calendarIdentifier isEqualToString:NSCalendarIdentifierJapanese]) {\n                    [[theValue(yearValue) should] equal:theValue(22)];\n                } else {\n                    [[theValue(yearValue) shouldNot] equal:theValue(2010)];\n                    [[theValue(yearValue) shouldNot] equal:theValue(22)];\n                }\n            });\n        });\n        context(@\"when the date'calendar is not Gregorian\", ^{\n            __block NSDate *currentDate;\n            __block NSDate *expectedDate;\n            beforeEach(^{\n                expectedDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n\n                NSCalendar *jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                NSDateComponents *dateComponents = [[NSDateComponents alloc] init];\n                dateComponents.year = 1;\n                dateComponents.month = 10;\n                dateComponents.day = 10;\n                currentDate = [jaCalendar dateFromComponents:dateComponents];\n                // +currentCalendar overwrite NSCalendarIdentifierJapanese.\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            it(@\"should return 1989\", ^{\n                NSInteger yearValue = [currentDate gregorianYear];\n                [[theValue(yearValue) should] equal:theValue(1989)];\n            });\n            it(@\"the date equal to 2010-10-10\", ^{\n                [[theValue(currentDate) shouldNot] equal:expectedDate];\n            });\n        });\n    });\n\nSPEC_END\n"
  },
  {
    "path": "Test/EscortRetrievingIntervalsSpec.m",
    "content": "#import \"Kiwi.h\"\n#import \"FakeDateUtil.h\"\n#import \"NSDate+AZDateBuilder.h\"\n#import \"NSDate+Escort.h\"\n\n@interface NSDate ()\n+ (NSCalendar *)AZ_currentCalendar;\n@end\n\nSPEC_BEGIN(EscortRetrievingIntervals)\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n\n    describe(@\"-minutesAfterDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 5 seconds ago\", ^{\n                int fiveSeconds = 5;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingSeconds:fiveSeconds];\n                });\n                it(@\"should return 5\", ^{\n                    NSInteger seconds = [currentDate secondsAfterDate:anotherDate];\n                    [[theValue(seconds) should] equal:theValue(fiveSeconds)];\n                });\n            });\n            context(@\"when 10 minutes ago\", ^{\n                int tenMinutes = 10;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingMinutes:tenMinutes];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger minutes = [currentDate minutesAfterDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(tenMinutes)];\n                });\n            });\n            context(@\"when 1 hour ago\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingHours:oneHour];\n                });\n                it(@\"should return 60\", ^{\n                    NSInteger minutes = [currentDate minutesAfterDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(60)];\n                });\n            });\n            context(@\"when 10 minutes later\", ^{\n                int tenMinutes = 10;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingMinutes:tenMinutes];\n                });\n                it(@\"should return -10\", ^{\n                    NSInteger minutes = [currentDate minutesAfterDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(-tenMinutes)];\n                });\n            });\n            context(@\"when 5 seconds later\", ^{\n                int fiveSeconds = 5;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingSeconds:fiveSeconds];\n                });\n                it(@\"should return -5\", ^{\n                    NSInteger seconds = [currentDate secondsAfterDate:anotherDate];\n                    [[theValue(seconds) should] equal:theValue(-fiveSeconds)];\n                });\n            });\n        });\n    });\n\n    describe(@\"-minutesBeforeDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 5 second later\", ^{\n                int fiveSecond = 5;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingSeconds:fiveSecond];\n                });\n                it(@\"should return 5\", ^{\n                    NSInteger seconds = [currentDate secondsBeforeDate:anotherDate];\n                    [[theValue(seconds) should] equal:theValue(fiveSecond)];\n                });\n            });\n            context(@\"when 10 minutes later\", ^{\n                int tenMinutes = 10;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingMinutes:tenMinutes];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger minutes = [currentDate minutesBeforeDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(tenMinutes)];\n                });\n            });\n            context(@\"when 1 hour later\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingHours:oneHour];\n                });\n                it(@\"should return 60\", ^{\n                    NSInteger minutes = [currentDate minutesBeforeDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(60)];\n                });\n            });\n            context(@\"when 10 minutes ago\", ^{\n                int tenMinutes = 10;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingMinutes:tenMinutes];\n                });\n                it(@\"should return -10\", ^{\n                    NSInteger minutes = [currentDate minutesBeforeDate:anotherDate];\n                    [[theValue(minutes) should] equal:theValue(-tenMinutes)];\n                });\n            });\n            context(@\"when 5 seconds ago\", ^{\n                int fiveSeconds = 5;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingSeconds:fiveSeconds];\n                });\n                it(@\"should return -5\", ^{\n                    NSInteger seconds = [currentDate secondsBeforeDate:anotherDate];\n                    [[theValue(seconds) should] equal:theValue(-fiveSeconds)];\n                });\n            });\n        });\n    });\n\n    describe(@\"-hoursAfterDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 1 hour ago\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingHours:oneHour];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger result = [currentDate hoursAfterDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(oneHour)];\n                });\n            });\n            context(@\"when 1 day ago\", ^{\n                int oneDay = 24;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingHours:oneDay];\n                });\n                it(@\"should return 24\", ^{\n                    NSInteger result = [currentDate hoursAfterDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(oneDay)];\n                });\n            });\n            context(@\"when 1 hour later\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingHours:oneHour];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger result = [currentDate hoursAfterDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(-oneHour)];\n                });\n            });\n        });\n    });\n\n    describe(@\"-hoursBeforeDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 1 hour later\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingHours:oneHour];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger result = [currentDate hoursBeforeDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(oneHour)];\n                });\n            });\n            context(@\"when 1 day later\", ^{\n                int oneDay = 24;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingHours:oneDay];\n                });\n                it(@\"should return 24\", ^{\n                    NSInteger result = [currentDate hoursBeforeDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(oneDay)];\n                });\n            });\n            context(@\"when 1 hour ago\", ^{\n                int oneHour = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingHours:oneHour];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger result = [currentDate hoursBeforeDate:anotherDate];\n                    [[theValue(result) should] equal:theValue(-oneHour)];\n                });\n            });\n        });\n    });\n\n\n    describe(@\"-daysAfterDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 1 day ago\", ^{\n                int oneDay = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingDays:oneDay];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger day = [currentDate daysAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(oneDay)];\n                });\n            });\n            context(@\"when 1 day later\", ^{\n                int oneDay = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingDays:oneDay];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger day = [currentDate daysAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(-oneDay)];\n                });\n            });\n        });\n        \n        // Set the date to 29th March 2015 01:00 (the day daylight savings ends)\n        context(@\"the date is 2015-03-29 00:00:00 in \", ^{\n            __block NSDate *currentDate;\n            __block NSDate *anotherDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @29,\n                }];\n                anotherDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @30,\n                }];\n            });\n            it(@\"should return 82800 seconds\", ^{\n                NSInteger diff = [currentDate timeIntervalSinceDate:anotherDate];\n                [[theValue(diff) should] equal:theValue(-82800)];\n            });\n            it(@\"should return 1\", ^{\n                NSInteger diff = [currentDate daysBeforeDate:anotherDate];\n                [[theValue(diff) should] equal:theValue(1)];\n            });\n        });\n    });\n\n    describe(@\"-daysBeforeDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"when 1 day ago\", ^{\n                int oneDay = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingDays:oneDay];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger day = [currentDate daysBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(-oneDay)];\n                });\n            });\n            context(@\"when 1 day later\", ^{\n                int oneDay = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingDays:oneDay];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger day = [currentDate daysBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(oneDay)];\n                });\n            });\n        });\n        context(@\"the date is 2015-03-29 00:00:00\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                NSTimeZone *timeZone = [NSTimeZone timeZoneWithName:@\"Europe/London\"];\n                [NSTimeZone stub:@selector(defaultTimeZone) andReturn:timeZone];\n                NSCalendar *calendar = [NSCalendar calendarWithIdentifier:NSCalendarIdentifierGregorian];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:calendar];\n                \n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2015,\n                    AZ_DateUnit.month : @3,\n                    AZ_DateUnit.day : @29,\n                }];\n            });\n            context(@\"when day ago\", ^{\n                int oneDay = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                           anotherDate = [currentDate dateByAddingDays:oneDay];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger diff = [currentDate daysAfterDate:anotherDate];\n                    [[theValue(diff) should] equal:theValue(-oneDay)];\n                });\n            });\n        });\n    });\n\n    describe(@\"-monthsBeforeDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"same date\", ^{\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsAfterDate:currentDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n            context(@\"when 1 months ago\", ^{\n                int oneMonth = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingMonths:oneMonth];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger day = [currentDate monthsAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(oneMonth)];\n                });\n            });\n            context(@\"when 1 months ago and 1 second later\", ^{\n                int oneMonth = 1;\n                int oneSecond = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [[currentDate dateBySubtractingMonths:oneMonth] dateByAddingTimeInterval:oneSecond];\n                });\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n            context(@\"when 1 month later\", ^{\n                int oneMonth = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingMonths:oneMonth];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger day = [currentDate monthsAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(-oneMonth)];\n                });\n            });\n            context(@\"when 1 month later and 1second ago\", ^{\n                int oneMonth = 1;\n                int oneSecond = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [[currentDate dateByAddingMonths:oneMonth] dateByAddingTimeInterval:-oneSecond];\n                });\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsAfterDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n        });\n    });\n    describe(@\"-monthsBeforeDate\", ^{\n        context(@\"the date is 2010-10-10 10:10:10\", ^{\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                               AZ_DateUnit.year : @2010,\n                               AZ_DateUnit.month : @10,\n                               AZ_DateUnit.day : @10,\n                               AZ_DateUnit.hour : @10,\n                               AZ_DateUnit.minute : @10,\n                               AZ_DateUnit.second : @10,\n                               }];\n                [FakeDateUtil stubCurrentDate:currentDate];\n            });\n            context(@\"same date\", ^{\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:currentDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n            context(@\"when 1 months ago\", ^{\n                int oneMonth = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingMonths:oneMonth];\n                });\n                it(@\"should return -1\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(-oneMonth)];\n                });\n            });\n            context(@\"when 1 months ago and 1 second later\", ^{\n                int oneMonth = 1;\n                int oneSecond = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [[currentDate dateBySubtractingMonths:oneMonth] dateByAddingTimeInterval:oneSecond];\n                });\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n            context(@\"when 1 month later\", ^{\n                int oneMonth = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingMonths:oneMonth];\n                });\n                it(@\"should return 1\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(oneMonth)];\n                });\n            });\n            context(@\"when 1 month later and 1second ago\", ^{\n                int oneMonth = 1;\n                int oneSecond = 1;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [[currentDate dateByAddingMonths:oneMonth] dateByAddingTimeInterval:-oneSecond];\n                });\n                it(@\"should return 0\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(0)];\n                });\n            });\n            context(@\"when 365 days later\", ^{\n                int day365 = 365;\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingDays:day365];\n                });\n                it(@\"should return 12\", ^{\n                    NSInteger day = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(day) should] equal:theValue(12)];\n                });\n            });\n        });\n        context(@\"when the date'calendar is not Gregorian\", ^{\n            __block NSCalendar *jaCalendar;\n            __block NSDate *currentDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @1988,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                }];\n                // +currentCalendar overwrite NSCalendarIdentifierJapanese.\n                jaCalendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSCalendarIdentifierJapanese];\n                [NSDate stub:@selector(AZ_currentCalendar) andReturn:jaCalendar];\n            });\n            context(@\"difference between Shouwa 64 and Heisei 1 is 1\", ^{\n                __block NSDate *anotherDate;\n                beforeEach(^{\n                    anotherDate = [NSDate AZ_dateByUnit:@{\n                        AZ_DateUnit.year : @1989,\n                        AZ_DateUnit.month : @10,\n                        AZ_DateUnit.day : @10,\n                    }];\n                });\n                it(@\"currentDate year is 63\", ^{\n                    [[theValue(currentDate.year) should] equal:theValue(63)];\n                });\n                it(@\"anotherDate year is 1\", ^{\n                    [[theValue(anotherDate.year) should] equal:theValue(1)];\n                });\n                it(@\"monthsBeforeaDate is 12\", ^() {\n                    NSInteger months = [currentDate monthsBeforeDate:anotherDate];\n                    [[theValue(months) should] equal:theValue(12)];\n                });\n                \n            });\n        });\n    });\n\n    describe(@\"-distanceInDaysToDate\", ^{\n        context(@\"the date 2010-10-10, \", ^{\n            __block NSDate *currentDate;\n            __block NSDate *anotherDate;\n            beforeEach(^{\n                currentDate = [NSDate AZ_dateByUnit:@{\n                    AZ_DateUnit.year : @2010,\n                    AZ_DateUnit.month : @10,\n                    AZ_DateUnit.day : @10,\n                    AZ_DateUnit.hour : @10,\n                    AZ_DateUnit.minute : @10,\n                    AZ_DateUnit.second : @10,\n                }];\n            });\n            context(@\"when another date is same date\", ^{\n                it(@\"should return 0\", ^{\n                    NSInteger expectDays = 0;\n                    NSInteger distanceDays = [currentDate distanceInDaysToDate:currentDate];\n                    [[theValue(distanceDays) should] equal:theValue(expectDays)];\n                });\n            });\n            context(@\"when another date is 10 days later\", ^{\n                NSInteger expectDays = 10;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingDays:expectDays];\n                });\n                it(@\"should return 10\", ^{\n                    NSInteger distanceDays = [currentDate distanceInDaysToDate:anotherDate];\n                    [[theValue(distanceDays) should] equal:theValue(expectDays)];\n                });\n            });\n            // big days\n            context(@\"when another date is 400 days later\", ^{\n                NSInteger expectDays = 400;\n                beforeEach(^{\n                    anotherDate = [currentDate dateByAddingDays:expectDays];\n                });\n                it(@\"should return 100\", ^{\n                    NSInteger distanceDays = [currentDate distanceInDaysToDate:anotherDate];\n                    [[theValue(distanceDays) should] equal:theValue(expectDays)];\n                });\n            });\n            context(@\"when another date is 10 days ago\", ^{\n                NSInteger expectDays = 10;\n                beforeEach(^{\n                    anotherDate = [currentDate dateBySubtractingDays:expectDays];\n                });\n                it(@\"should return -10\", ^{\n                    NSInteger distanceDays = [currentDate distanceInDaysToDate:anotherDate];\n                    [[theValue(distanceDays) should] equal:theValue(-expectDays)];\n                });\n            });\n        });\n    });\n\n    SPEC_END\n"
  },
  {
    "path": "Test/Lib/FakeDateUtil/FakeDateUtil.h",
    "content": "//\n// Created by azu on 2013/06/09.\n//\n\n\n#import <Foundation/Foundation.h>\n\n\n@interface FakeDateUtil : NSObject\n+ (void)stubCurrentDate:(NSDate *) date;\n@end"
  },
  {
    "path": "Test/Lib/FakeDateUtil/FakeDateUtil.m",
    "content": "//\n// Created by azu on 2013/06/09.\n//\n\n\n#import \"FakeDateUtil.h\"\n#import \"NSObject+KiwiStubAdditions.h\"\n#import \"Kiwi.h\"\n\n@implementation FakeDateUtil {\n\n}\n+ (void)stubCurrentDate:(NSDate *) date {\n    // +date\n    [NSDate stub:@selector(date) andReturn:date];\n    // +timeIntervalSinceReferenceDate\n    [NSDate stub:@selector(timeIntervalSinceReferenceDate) andReturn:theValue([date timeIntervalSinceReferenceDate])];\n}\n@end"
  },
  {
    "path": "Test/Matcher/AZNSDateKiwiMatcher.h",
    "content": "//\n// Created by azu on 2013/06/09.\n// License MIT\n\n\n#import <Foundation/Foundation.h>\n#import \"KWMatcher.h\"\n\ntypedef NS_ENUM(NSUInteger, KWDateInequalityType){\n    KWDateInequalityTypeEqualToDateIgnoringTime,// ≒\n};\n\n/*  How to Use\n    Put Your Spec File:\n\n    registerMatchers(@\"AZ\");// NSDate Custom Matcher\n */\n@interface AZNSDateKiwiMatcher : KWMatcher\n- (void)equalToDateIgnoringTime:(NSDate *) otherDate;\n@end"
  },
  {
    "path": "Test/Matcher/AZNSDateKiwiMatcher.m",
    "content": "//\n// Created by azu on 2013/06/09.\n//\n\n\n#import \"AZNSDateKiwiMatcher.h\"\n#import \"KWFormatter.h\"\n\n\n@interface AZNSDateKiwiMatcher ()\n@property(nonatomic) KWDateInequalityType dateInequalityType;\n@property(nonatomic, strong) NSDate *otherDate;\n@end\n\n@implementation AZNSDateKiwiMatcher {\n\n}\n#pragma mark Getting Matcher Strings\n\n// REQUIRED: Return an array of selector strings for the expectations this\n// matcher is used for.\n//\n// For example, this matcher handles [[subject should] beTypeOfMammal:] and\n// [[subject should] beTypeOfInsect:].\n+ (NSArray *)matcherStrings {\n    return @[@\"equalToDateIgnoringTime:\"];\n}\n\n#pragma mark Matching\n\n// REQUIRED: Evaluate the predicate here.\n// self.subject is available automatically.\n// self.otherDate is a member variable you would have declared yourself.\n- (BOOL)evaluate {\n    NSDate *subjectDate = (NSDate *)self.subject;\n    if (![subjectDate isKindOfClass:[NSDate class]]) {\n        [NSException raise:@\"KWMatcherException\" format:@\"subject is not a NSDate\"];\n        return NO;\n    }\n    switch (self.dateInequalityType) {\n        case KWDateInequalityTypeEqualToDateIgnoringTime:\n            return [self compareDateIgnoringTime];\n    }\n    return NO;\n}\n\n- (BOOL)compareDateIgnoringTime {\n    NSCalendar *currentCalendar = [NSCalendar currentCalendar];\n    enum NSCalendarUnit unitFlags = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay;\n    NSDateComponents *components1 = [currentCalendar components:unitFlags fromDate:self.subject];\n    NSDateComponents *components2 = [currentCalendar components:unitFlags fromDate:self.otherDate];\n    return ((components1.year == components2.year) &&\n        (components1.month == components2.month) &&\n        (components1.day == components2.day));\n}\n\n#pragma mark Getting Failure Messages\n\n- (NSString *)comparisonPhrase {\n    switch (self.dateInequalityType) {\n        case KWDateInequalityTypeEqualToDateIgnoringTime:\n            return @\"≒\";\n        default:\n            break;\n    }\n\n    assert(0 && \"should never reach here\");\n    return nil;\n}\n\n- (NSString *)failureMessageForShould {\n    return [NSString stringWithFormat:@\"expected subject to be %@ %@, got %@\",\n                                      [self comparisonPhrase],\n                                      [KWFormatter formatObject:self.otherDate],\n                                      [KWFormatter formatObject:self.subject]];\n}\n\n- (NSString *)description {\n    return [NSString stringWithFormat:@\"be %@ %@\", [self comparisonPhrase], [KWFormatter formatObject:self.otherDate]];\n}\n\n#pragma mark Configuring Matchers\n\n- (void)equalToDateIgnoringTime:(NSDate *) otherDate {\n    self.dateInequalityType = KWDateInequalityTypeEqualToDateIgnoringTime;\n    self.otherDate = otherDate;\n}\n\n@end"
  },
  {
    "path": "Test/Test-Info.plist",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE plist PUBLIC \"-//Apple//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">\n<plist version=\"1.0\">\n<dict>\n\t<key>CFBundleDevelopmentRegion</key>\n\t<string>en</string>\n\t<key>CFBundleExecutable</key>\n\t<string>${EXECUTABLE_NAME}</string>\n\t<key>CFBundleIdentifier</key>\n\t<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>\n\t<key>CFBundleInfoDictionaryVersion</key>\n\t<string>8.0</string>\n\t<key>CFBundlePackageType</key>\n\t<string>BNDL</string>\n\t<key>CFBundleShortVersionString</key>\n\t<string>1.0</string>\n\t<key>CFBundleSignature</key>\n\t<string>????</string>\n\t<key>CFBundleVersion</key>\n\t<string>1</string>\n</dict>\n</plist>\n"
  },
  {
    "path": "Test/Test-Prefix.pch",
    "content": "//\n//  Prefix header\n//\n//  The contents of this file are implicitly included at the beginning of every source file.\n//\n\n#ifdef __OBJC__\n    #import <UIKit/UIKit.h>\n    #import <Foundation/Foundation.h>\n#endif\n#define SECONDS_IN_MINUTE 60\n#define MINUTES_IN_HOUR 60\n#define DAYS_IN_WEEK 7\n#define SECONDS_IN_HOUR (SECONDS_IN_MINUTE * MINUTES_IN_HOUR)\n#define HOURS_IN_DAY 24\n#define SECONDS_IN_DAY (HOURS_IN_DAY * SECONDS_IN_HOUR)\n"
  },
  {
    "path": "Test/en.lproj/InfoPlist.strings",
    "content": "/* Localized versions of Info.plist keys */\n\n"
  },
  {
    "path": "script/run-test.sh",
    "content": "#!/bin/sh\n\nxcodebuild test -workspace NSDate-Escort.xcworkspace \\\n-scheme 'Test' \\\n-sdk iphonesimulator \\\n-destination 'platform=iOS Simulator,OS=12.2,name=iPhone XS' \\\nGCC_GENERATE_TEST_COVERAGE_FILES=YES\n"
  }
]