5 // Created by Peter Hosey on 2007-11-12.
6 // Copyright 2007 Peter Hosey. All rights reserved.
9 #import "TestDateAdditions.h"
11 #import <AIUtilities/AIDateAdditions.h>
13 @implementation TestDateAdditions
15 - (void)testConvertIntervalToWeeks
17 NSCalendarDate *now = [NSCalendarDate calendarDate];
20 int weeks, days, hours, minutes;
21 NSTimeInterval seconds;
23 //Test exactly one week ago.
25 dateByAddingYears:-0 months:-0 days:-7
26 hours:-0 minutes:-0 seconds:-0];
27 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
33 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
34 STAssertEquals(weeks, 1, @"Expected the difference between now and 7 days ago to be 1 week; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
35 STAssertEquals( days, 0, @"Expected the difference between now and 7 days ago to be 1 week, 0 days; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
36 STAssertEquals(hours, 0, @"Expected the difference between now and 7 days ago to be 1 week, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
37 STAssertEquals(minutes, 0, @"Expected the difference between now and 7 days ago to be 1 week, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
38 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 7 days ago to be 1 week, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
40 //Test eight days ago. [Insert obligatory Beatles reference]
42 dateByAddingYears:-0 months:-0 days:-8
43 hours:-0 minutes:-0 seconds:-0];
44 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
50 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
51 STAssertEquals(weeks, 1, @"Expected the difference between now and 8 days ago to be 1 week, 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
52 STAssertEquals( days, 1, @"Expected the difference between now and 8 days ago to be 1 week, 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
53 STAssertEquals(hours, 0, @"Expected the difference between now and 8 days ago to be 1 week, 1 day, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
54 STAssertEquals(minutes, 0, @"Expected the difference between now and 8 days ago to be 1 week, 1 day, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
55 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 8 days ago to be 1 week, 1 day, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
57 //Test six days (almost, but not quite, one week) ago. [Insert obligatory DJ Shadow reference]
59 dateByAddingYears:-0 months:-0 days:-6
60 hours:-0 minutes:-0 seconds:-0];
61 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
67 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
68 STAssertEquals(weeks, 0, @"Expected the difference between now and 6 days ago to be 0 weeks, 6 days; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
69 STAssertEquals( days, 6, @"Expected the difference between now and 8 days ago to be 6 days; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
70 STAssertEquals(hours, 0, @"Expected the difference between now and 8 days ago to be 6 days, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
71 STAssertEquals(minutes, 0, @"Expected the difference between now and 8 days ago to be 6 days, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
72 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 8 days ago to be 6 days, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
74 - (void)testConvertIntervalToDays
76 NSCalendarDate *now = [NSCalendarDate calendarDate];
79 int weeks, days, hours, minutes;
80 NSTimeInterval seconds;
84 dateByAddingYears:-0 months:-0 days:-1
85 hours:-0 minutes:-0 seconds:-0];
86 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
92 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
93 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 day ago to be 0 weeks, 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
94 STAssertEquals( days, 1, @"Expected the difference between now and 1 day ago to be 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
95 STAssertEquals(hours, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
96 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
97 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 day ago to be 1 day, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
99 //Test one day ago, expressed as hours.
101 dateByAddingYears:-0 months:-0 days:-0
102 hours:-24 minutes:-0 seconds:-0];
103 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
109 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
110 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 day ago to be 0 weeks, 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
111 STAssertEquals( days, 1, @"Expected the difference between now and 1 day ago to be 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
112 STAssertEquals(hours, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
113 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
114 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 day ago to be 1 day, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
116 //Test 23 hours (almost, but not quite, one day) ago.
118 dateByAddingYears:-0 months:-0 days:-0
119 hours:-24 minutes:-0 seconds:-0];
120 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
126 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
127 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 day ago to be 0 weeks, 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
128 STAssertEquals( days, 1, @"Expected the difference between now and 1 day ago to be 1 day; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
129 STAssertEquals(hours, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 hours; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
130 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 day ago to be 1 day, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
131 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 day ago to be 1 day, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
133 - (void)testConvertIntervalToHours
135 NSCalendarDate *now = [NSCalendarDate calendarDate];
136 NSCalendarDate *then;
138 int weeks, days, hours, minutes;
139 NSTimeInterval seconds;
143 dateByAddingYears:-0 months:-0 days:-0
144 hours:-1 minutes:-0 seconds:-0];
145 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
151 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
152 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 hour ago to be 0 weeks, 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
153 STAssertEquals( days, 0, @"Expected the difference between now and 1 hour ago to be 0 days, 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
154 STAssertEquals(hours, 1, @"Expected the difference between now and 1 hour ago to be 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
155 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 hour ago to be 1 hour, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
156 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 hour ago to be 1 hour, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
158 //Test one hour ago, expressed as minutes.
160 dateByAddingYears:-0 months:-0 days:-0
161 hours:-1 minutes:-0 seconds:-0];
162 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
168 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
169 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 hour ago to be 0 weeks, 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
170 STAssertEquals( days, 0, @"Expected the difference between now and 1 hour ago to be 0 days, 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
171 STAssertEquals(hours, 1, @"Expected the difference between now and 1 hour ago to be 1 hour; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
172 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 hour ago to be 1 hour, 0 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
173 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 hour ago to be 1 hour, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
175 //Test 59 minutes (almost, but not quite, one hour) ago.
177 dateByAddingYears:-0 months:-0 days:-0
178 hours:-0 minutes:-59 seconds:-0];
179 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
185 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
186 STAssertEquals(weeks, 0, @"Expected the difference between now and 59 minutes ago to be 0 weeks, 59 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
187 STAssertEquals( days, 0, @"Expected the difference between now and 59 minutes ago to be 0 days, 59 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
188 STAssertEquals(hours, 0, @"Expected the difference between now and 59 minutes ago to be 0 hours, 59 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
189 STAssertEquals(minutes, 59, @"Expected the difference between now and 59 minutes ago to be 59 minutes; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
190 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 59 minutes ago to be 59 minutes, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
192 - (void)testConvertIntervalToMinutes
194 NSCalendarDate *now = [NSCalendarDate calendarDate];
195 NSCalendarDate *then;
197 int weeks, days, hours, minutes;
198 NSTimeInterval seconds;
200 //Test one minute ago.
202 dateByAddingYears:-0 months:-0 days:-0
203 hours:-0 minutes:-1 seconds:-0];
204 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
210 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
211 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 minute ago to be 0 weeks, 1 minute; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
212 STAssertEquals( days, 0, @"Expected the difference between now and 1 minute ago to be 0 days, 1 minute; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
213 STAssertEquals(hours, 0, @"Expected the difference between now and 1 minute ago to be 0 hours, 1 minute; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
214 STAssertEquals(minutes, 1, @"Expected the difference between now and 1 minute ago to be 1 minute; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
215 STAssertEquals(seconds, 0.0, @"Expected the difference between now and 1 minute ago to be 1 minute, 0 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
217 //Test 59 seconds (almost, but not quite, one minute) ago.
219 dateByAddingYears:-0 months:-0 days:-0
220 hours:-0 minutes:-0 seconds:-59];
221 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
227 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
228 STAssertEquals(weeks, 0, @"Expected the difference between now and 59 seconds ago to be 0 weeks, 59 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
229 STAssertEquals( days, 0, @"Expected the difference between now and 59 seconds ago to be 0 days, 59 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
230 STAssertEquals(hours, 0, @"Expected the difference between now and 59 seconds ago to be 0 hours, 59 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
231 STAssertEquals(minutes, 0, @"Expected the difference between now and 59 seconds ago to be 0 minutes, 59 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
232 STAssertEquals(seconds, 59.0, @"Expected the difference between now and 59 seconds ago to be 59 seconds; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
234 - (void)testConvertIntervalToSeconds
236 NSCalendarDate *now = [NSCalendarDate calendarDate];
237 NSCalendarDate *then;
239 int weeks, days, hours, minutes;
240 NSTimeInterval seconds;
242 //Test one second ago.
244 dateByAddingYears:-0 months:-0 days:-0
245 hours:-0 minutes:-0 seconds:-1];
246 [NSDate convertTimeInterval:[now timeIntervalSinceDate:then]
252 NSLog(@"%s: seconds is %.15f", __PRETTY_FUNCTION__, seconds);
253 STAssertEquals(weeks, 0, @"Expected the difference between now and 1 second ago to be 0 weeks, 1 second; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
254 STAssertEquals( days, 0, @"Expected the difference between now and 1 second ago to be 0 days, 1 second; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
255 STAssertEquals(hours, 0, @"Expected the difference between now and 1 second ago to be 0 hours, 1 second; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
256 STAssertEquals(minutes, 0, @"Expected the difference between now and 1 second ago to be 0 minutes, 1 second; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);
257 STAssertEquals(seconds, 1.0, @"Expected the difference between now and 1 second ago to be 1 second; result was %iw, %id, %ih, %im, %fs", weeks, days, hours, minutes, seconds);