diff --git a/NSDateCalculations.xcodeproj/oscar.mode1v3 b/NSDateCalculations.xcodeproj/oscar.mode1v3 index e8d3d1a..42c4fa9 100644 --- a/NSDateCalculations.xcodeproj/oscar.mode1v3 +++ b/NSDateCalculations.xcodeproj/oscar.mode1v3 @@ -329,7 +329,7 @@ _historyCapacity 0 bookmark - 554D611E131AD9890012E38A + 55060782131BD0FC0002B673 history 5507B7BA131A8039001918DB @@ -337,10 +337,9 @@ 5507B83A131A8EA4001918DB 5507B83C131A8EA4001918DB 5507B844131A8EE3001918DB - 554D6103131AD9330012E38A - 554D6104131AD9330012E38A - 554D6105131AD9330012E38A - 554D6107131AD9330012E38A + 5506077F131BD0FC0002B673 + 55060780131BD0FC0002B673 + 55060781131BD0FC0002B673 SplitCount @@ -352,14 +351,14 @@ GeometryConfiguration Frame - {{0, 0}, {938, 663}} + {{0, 0}, {938, 653}} RubberWindowFrame 590 179 1146 899 0 0 1920 1178 Module PBXNavigatorGroup Proportion - 663pt + 653pt ContentConfiguration @@ -372,14 +371,14 @@ GeometryConfiguration Frame - {{0, 668}, {938, 190}} + {{0, 658}, {938, 200}} RubberWindowFrame 590 179 1146 899 0 0 1920 1178 Module XCDetailModule Proportion - 190pt + 200pt Proportion @@ -398,9 +397,9 @@ TableOfContents - 554D611F131AD9890012E38A + 55060756131BCDD40002B673 1CE0B1FE06471DED0097A5F4 - 554D6120131AD9890012E38A + 55060757131BCDD40002B673 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -619,7 +618,7 @@ TableOfContents 5507B7C4131A8039001918DB - 554D6121131AD9890012E38A + 55060758131BCDD40002B673 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID diff --git a/NSDateCalculations.xcodeproj/oscar.pbxuser b/NSDateCalculations.xcodeproj/oscar.pbxuser index de2ad25..fd25662 100644 --- a/NSDateCalculations.xcodeproj/oscar.pbxuser +++ b/NSDateCalculations.xcodeproj/oscar.pbxuser @@ -77,25 +77,167 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 320531536; - PBXWorkspaceStateSaveDate = 320531536; + PBXPerProjectTemplateStateSaveDate = 320589267; + PBXWorkspaceStateSaveDate = 320589267; }; perUserProjectItems = { + 55060755131BCDD40002B673 /* PBXTextBookmark */ = 55060755131BCDD40002B673 /* PBXTextBookmark */; + 55060763131BCE7C0002B673 /* PBXTextBookmark */ = 55060763131BCE7C0002B673 /* PBXTextBookmark */; + 55060764131BCE7C0002B673 /* PBXTextBookmark */ = 55060764131BCE7C0002B673 /* PBXTextBookmark */; + 55060765131BCE7C0002B673 /* PBXTextBookmark */ = 55060765131BCE7C0002B673 /* PBXTextBookmark */; + 5506076A131BCFFE0002B673 /* PBXTextBookmark */ = 5506076A131BCFFE0002B673 /* PBXTextBookmark */; + 5506076B131BCFFE0002B673 /* PBXTextBookmark */ = 5506076B131BCFFE0002B673 /* PBXTextBookmark */; + 5506076C131BCFFE0002B673 /* PBXTextBookmark */ = 5506076C131BCFFE0002B673 /* PBXTextBookmark */; + 5506076D131BCFFE0002B673 /* PBXTextBookmark */ = 5506076D131BCFFE0002B673 /* PBXTextBookmark */; + 55060774131BD0560002B673 /* PBXTextBookmark */ = 55060774131BD0560002B673 /* PBXTextBookmark */; + 5506077F131BD0FC0002B673 /* PBXTextBookmark */ = 5506077F131BD0FC0002B673 /* PBXTextBookmark */; + 55060780131BD0FC0002B673 /* PBXTextBookmark */ = 55060780131BD0FC0002B673 /* PBXTextBookmark */; + 55060781131BD0FC0002B673 /* PBXTextBookmark */ = 55060781131BD0FC0002B673 /* PBXTextBookmark */; + 55060782131BD0FC0002B673 /* PBXTextBookmark */ = 55060782131BD0FC0002B673 /* PBXTextBookmark */; 5507B7BA131A8039001918DB = 5507B7BA131A8039001918DB /* PBXTextBookmark */; 5507B806131A8940001918DB = 5507B806131A8940001918DB /* PBXTextBookmark */; 5507B83A131A8EA4001918DB = 5507B83A131A8EA4001918DB /* PBXTextBookmark */; 5507B83C131A8EA4001918DB = 5507B83C131A8EA4001918DB /* PBXTextBookmark */; 5507B844131A8EE3001918DB = 5507B844131A8EE3001918DB /* PBXTextBookmark */; - 554D6103131AD9330012E38A = 554D6103131AD9330012E38A /* PBXTextBookmark */; - 554D6104131AD9330012E38A = 554D6104131AD9330012E38A /* PBXTextBookmark */; 554D6105131AD9330012E38A = 554D6105131AD9330012E38A /* PBXTextBookmark */; - 554D6107131AD9330012E38A = 554D6107131AD9330012E38A /* PBXTextBookmark */; - 554D611E131AD9890012E38A = 554D611E131AD9890012E38A /* PBXTextBookmark */; + 554D61A5131AF3210012E38A = 554D61A5131AF3210012E38A /* PBXTextBookmark */; + 554D61A6131AF3210012E38A = 554D61A6131AF3210012E38A /* PBXTextBookmark */; + 554D61A7131AF3210012E38A = 554D61A7131AF3210012E38A /* PBXTextBookmark */; }; sourceControlManager = 5507B71B131A7D8C001918DB /* Source Control */; userBuildSettings = { }; }; + 55060755131BCDD40002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 55"; + rLen = 0; + rLoc = 1322; + rType = 0; + vrLen = 1172; + vrLoc = 604; + }; + 55060763131BCE7C0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 38"; + rLen = 0; + rLoc = 909; + rType = 0; + vrLen = 1174; + vrLoc = 218; + }; + 55060764131BCE7C0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */; + name = "NSDate+Calculations.h: 26"; + rLen = 0; + rLoc = 802; + rType = 0; + vrLen = 575; + vrLoc = 0; + }; + 55060765131BCE7C0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */; + name = "NSDate+Calculations.h: 26"; + rLen = 0; + rLoc = 513; + rType = 0; + vrLen = 599; + vrLoc = 0; + }; + 5506076A131BCFFE0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */; + name = "NSDate+Calculations.h: 26"; + rLen = 147; + rLoc = 489; + rType = 0; + vrLen = 724; + vrLoc = 0; + }; + 5506076B131BCFFE0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */; + name = "NSDate+Calculations.m: 226"; + rLen = 0; + rLoc = 6378; + rType = 0; + vrLen = 1127; + vrLoc = 4819; + }; + 5506076C131BCFFE0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 38"; + rLen = 0; + rLoc = 909; + rType = 0; + vrLen = 1172; + vrLoc = 218; + }; + 5506076D131BCFFE0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 199"; + rLen = 0; + rLoc = 5306; + rType = 0; + vrLen = 1166; + vrLoc = 4870; + }; + 55060774131BD0560002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 199"; + rLen = 0; + rLoc = 5306; + rType = 0; + vrLen = 1169; + vrLoc = 4870; + }; + 5506077F131BD0FC0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */; + name = "NSDate+Calculations.h: 29"; + rLen = 143; + rLoc = 638; + rType = 0; + vrLen = 869; + vrLoc = 0; + }; + 55060780131BD0FC0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 241"; + rLen = 0; + rLoc = 6290; + rType = 0; + vrLen = 1268; + vrLoc = 5015; + }; + 55060781131BD0FC0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */; + name = "NSDate+Calculations.m: 224"; + rLen = 0; + rLoc = 5919; + rType = 0; + vrLen = 1391; + vrLoc = 4817; + }; + 55060782131BD0FC0002B673 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */; + name = "NSDate+Calculations.m: 221"; + rLen = 0; + rLoc = 5845; + rType = 0; + vrLen = 1388; + vrLoc = 4905; + }; 5507B717131A7D6D001918DB /* NSDateCalculations */ = { isa = PBXExecutable; activeArgIndices = ( @@ -141,38 +283,25 @@ 5507B722131A7DD8001918DB /* Test */ = { activeExec = 0; }; - 5507B7AB131A7EDE001918DB /* NSDateCalculationsTest.h */ = { - isa = PBXFileReference; - fileEncoding = 4; - lastKnownFileType = sourcecode.c.h; - name = NSDateCalculationsTest.h; - path = /Users/oscar/projects/cocoa/projects/NSDateCalculations/Test/NSDateCalculationsTest.h; - sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1174, 626}}"; - sepNavSelRange = "{595, 168}"; - sepNavVisRange = "{0, 763}"; - }; - }; 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {877, 3107}}"; - sepNavSelRange = "{305, 0}"; - sepNavVisRange = "{0, 1097}"; + sepNavIntBoundsRect = "{{0, 0}, {877, 3224}}"; + sepNavSelRange = "{6290, 0}"; + sepNavVisRange = "{5015, 1268}"; }; }; 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {877, 636}}"; - sepNavSelRange = "{0, 575}"; - sepNavVisRange = "{0, 575}"; + sepNavIntBoundsRect = "{{0, 0}, {877, 621}}"; + sepNavSelRange = "{638, 143}"; + sepNavVisRange = "{0, 869}"; }; }; 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {877, 2977}}"; - sepNavSelRange = "{5374, 0}"; - sepNavVisRange = "{4355, 1200}"; + sepNavIntBoundsRect = "{{0, 0}, {877, 3276}}"; + sepNavSelRange = "{5845, 0}"; + sepNavVisRange = "{4905, 1388}"; }; }; 5507B7BA131A8039001918DB /* PBXTextBookmark */ = { @@ -246,54 +375,44 @@ vrLen = 538; vrLoc = 0; }; - 554D6103131AD9330012E38A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 5507B7AB131A7EDE001918DB /* NSDateCalculationsTest.h */; - name = "NSDateCalculationsTest.h: 45"; - rLen = 0; - rLoc = 757; - rType = 0; - vrLen = 1288; - vrLoc = 0; - }; - 554D6104131AD9330012E38A /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; - name = "NSDateCalculationsTest.m: 226"; - rLen = 0; - rLoc = 5834; - rType = 0; - vrLen = 1092; - vrLoc = 4658; - }; 554D6105131AD9330012E38A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 5507B7B2131A7F72001918DB /* NSDate+Calculations.h */; name = "NSDate+Calculations.h: 1"; - rLen = 575; + rLen = 869; rLoc = 0; rType = 0; vrLen = 575; vrLoc = 0; }; - 554D6107131AD9330012E38A /* PBXTextBookmark */ = { + 554D61A5131AF3210012E38A /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */; - name = "NSDate+Calculations.m: 1"; - rLen = 5561; - rLoc = 0; + name = "NSDate+Calculations.m: 210"; + rLen = 0; + rLoc = 6378; rType = 0; - vrLen = 1186; + vrLen = 1200; vrLoc = 4355; }; - 554D611E131AD9890012E38A /* PBXTextBookmark */ = { + 554D61A6131AF3210012E38A /* PBXTextBookmark */ = { isa = PBXTextBookmark; - fRef = 5507B7B3131A7F72001918DB /* NSDate+Calculations.m */; - name = "NSDate+Calculations.m: 210"; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 59"; rLen = 0; - rLoc = 5374; + rLoc = 1537; rType = 0; - vrLen = 1200; - vrLoc = 4355; + vrLen = 1201; + vrLoc = 298; + }; + 554D61A7131AF3210012E38A /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 5507B7AC131A7EDE001918DB /* NSDateCalculationsTest.m */; + name = "NSDateCalculationsTest.m: 55"; + rLen = 0; + rLoc = 1322; + rType = 0; + vrLen = 1197; + vrLoc = 579; }; } diff --git a/NSDateCalculations/NSDate+Calculations.h b/NSDateCalculations/NSDate+Calculations.h index 9f2074a..7408b93 100644 --- a/NSDateCalculations/NSDate+Calculations.h +++ b/NSDateCalculations/NSDate+Calculations.h @@ -23,6 +23,12 @@ - (NSDate *)endOfWeek; - (NSDate *)endOfYear; +- (NSDate *)advance:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds; + +- (NSDate *)ago:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds; + - (int)daysInMonth; - (NSDate *)monthsSince:(int)months; - (NSDate *)nextMonth; diff --git a/NSDateCalculations/NSDate+Calculations.m b/NSDateCalculations/NSDate+Calculations.m index 7164483..0ea62aa 100644 --- a/NSDateCalculations/NSDate+Calculations.m +++ b/NSDateCalculations/NSDate+Calculations.m @@ -196,6 +196,36 @@ - (NSDate *)endOfYear #pragma mark - #pragma mark Other Calculations +- (NSDate *)advance:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds +{ + NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; + [comps setYear:years]; + [comps setMonth:months]; + [comps setWeek:weeks]; + [comps setDay:days]; + [comps setHour:hours]; + [comps setMinute:minutes]; + [comps setSecond:seconds]; + + return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:self options:0]; +} + +- (NSDate *)ago:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds +{ + NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; + [comps setYear:-years]; + [comps setMonth:-months]; + [comps setWeek:-weeks]; + [comps setDay:-days]; + [comps setHour:-hours]; + [comps setMinute:-minutes]; + [comps setSecond:-seconds]; + + return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:self options:0]; +} + - (int)daysInMonth { NSCalendar *currentCalendar = [NSCalendar currentCalendar]; @@ -207,10 +237,7 @@ - (int)daysInMonth - (NSDate *)monthsSince:(int)months { - NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; - [comps setMonth:months]; - - return [[NSCalendar currentCalendar] dateByAddingComponents:comps toDate:self options:0]; + return [self advance:0 months:months weeks:0 days:0 hours:0 minutes:0 seconds:0]; } - (NSDate *)nextMonth diff --git a/Readme b/Readme index 16c8ae7..a91b57b 100644 --- a/Readme +++ b/Readme @@ -18,6 +18,12 @@ Currently implemented methods: - (NSDate *)endOfWeek; - (NSDate *)endOfYear; +- (NSDate *)advance:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds; + +- (NSDate *)ago:(int)years months:(int)months weeks:(int)weeks days:(int)days + hours:(int)hours minutes:(int)minutes seconds:(int)seconds; + - (int)daysInMonth; - (NSDate *)monthsSince:(int)months; - (NSDate *)nextMonth; diff --git a/Test/NSDateCalculationsTest.m b/Test/NSDateCalculationsTest.m index c39b160..ed7ce1b 100644 --- a/Test/NSDateCalculationsTest.m +++ b/Test/NSDateCalculationsTest.m @@ -19,7 +19,7 @@ @implementation NSDateCalculationsTest #pragma mark - #pragma mark Helpers -- (NSDate *)createDate:(int)year month:(int)month day:(int)day hour:(int)hour minute:(int)minute +- (NSDate *)createDate:(int)year month:(int)month day:(int)day hour:(int)hour minute:(int)minute second:(int)second { NSDateComponents *comps = [[[NSDateComponents alloc] init] autorelease]; [comps setYear:year]; @@ -27,6 +27,7 @@ - (NSDate *)createDate:(int)year month:(int)month day:(int)day hour:(int)hour mi [comps setDay:day]; [comps setHour:hour]; [comps setMinute:minute]; + [comps setSecond:second]; return [[NSCalendar currentCalendar] dateFromComponents:comps]; } @@ -34,7 +35,7 @@ - (NSDate *)createDate:(int)year month:(int)month day:(int)day hour:(int)hour mi // 2011 06 23 - 10:15 - (NSDate *)defaultDate { - return [self createDate:2011 month:6 day:23 hour:10 minute:15]; + return [self createDate:2011 month:6 day:23 hour:10 minute:15 second:0]; } - (NSString *)formattedDate:(NSDate *)date @@ -68,7 +69,7 @@ - (void)testBeginningOfMonth; - (void)testBeginningOfQuarter1 { - NSDate *date = [self createDate:2011 month:2 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:2 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date beginningOfQuarter]]; NSString *expected = @"2011 01 01 - 00:00:00"; @@ -77,7 +78,7 @@ - (void)testBeginningOfQuarter1 - (void)testBeginningOfQuarter2 { - NSDate *date = [self createDate:2011 month:5 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:5 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date beginningOfQuarter]]; NSString *expected = @"2011 04 01 - 00:00:00"; @@ -86,7 +87,7 @@ - (void)testBeginningOfQuarter2 - (void)testBeginningOfQuarter3 { - NSDate *date = [self createDate:2011 month:9 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:9 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date beginningOfQuarter]]; NSString *expected = @"2011 07 01 - 00:00:00"; @@ -95,7 +96,7 @@ - (void)testBeginningOfQuarter3 - (void)testBeginningOfQuarter4 { - NSDate *date = [self createDate:2011 month:12 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:12 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date beginningOfQuarter]]; NSString *expected = @"2011 10 01 - 00:00:00"; @@ -139,7 +140,7 @@ - (void)testEndOfMonth - (void)testEndOfQuarter1 { - NSDate *date = [self createDate:2011 month:2 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:2 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date endOfQuarter]]; NSString *expected = @"2011 03 31 - 23:59:59"; @@ -148,7 +149,7 @@ - (void)testEndOfQuarter1 - (void)testEndOfQuarter2 { - NSDate *date = [self createDate:2011 month:5 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:5 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date endOfQuarter]]; NSString *expected = @"2011 06 30 - 23:59:59"; @@ -157,7 +158,7 @@ - (void)testEndOfQuarter2 - (void)testEndOfQuarter3 { - NSDate *date = [self createDate:2011 month:9 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:9 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date endOfQuarter]]; NSString *expected = @"2011 09 30 - 23:59:59"; @@ -166,7 +167,7 @@ - (void)testEndOfQuarter3 - (void)testEndOfQuarter4 { - NSDate *date = [self createDate:2011 month:12 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:12 day:14 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date endOfQuarter]]; NSString *expected = @"2011 12 31 - 23:59:59"; @@ -191,20 +192,29 @@ - (void)testEndOfYear #pragma mark Tests Days in month -- (void)testDaysInMonth1 +- (void)testAdvance { - NSDate *date = [self createDate:2011 month:8 day:14 hour:13 minute:12]; - int result = [date daysInMonth]; - int expected = 31; + NSString *result = [self formattedDate:[[self defaultDate] + advance:0 months:0 weeks:2 days:1 hours:3 minutes:10 seconds:45]]; + NSString *expected = @"2011 07 08 - 13:25:45"; - STAssertEquals(result, expected, nil); + STAssertEqualObjects(result, expected, nil); +} + +- (void)testAgo +{ + NSString *result = [self formattedDate:[[self defaultDate] + ago:1 months:1 weeks:0 days:1 hours:2 minutes:10 seconds:0]]; + NSString *expected = @"2010 05 22 - 08:05:00"; + + STAssertEqualObjects(result, expected, nil); } -- (void)testDaysInMonth2 +- (void)testDaysInMonth { - NSDate *date = [self createDate:2011 month:6 day:14 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:8 day:14 hour:13 minute:12 second:0]; int result = [date daysInMonth]; - int expected = 30; + int expected = 31; STAssertEquals(result, expected, nil); } @@ -219,7 +229,7 @@ - (void)testMonthsSince - (void)testNextMonth { - NSDate *date = [self createDate:2011 month:8 day:31 hour:13 minute:12]; + NSDate *date = [self createDate:2011 month:8 day:31 hour:13 minute:12 second:0]; NSString *result = [self formattedDate:[date nextMonth]]; NSString *expected = @"2011 09 30 - 13:12:00";