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";