@@ -74,27 +74,26 @@ public void AtTimeSpan()
7474 public void AtMultipleTimeSpan ( )
7575 {
7676 // Arrange
77- var now = new DateTime ( 2025 , 8 , 20 , 10 , 0 , 0 ) ;
78- var expected = new DateTime ( 2025 , 8 , 20 , 15 , 0 , 0 ) ;
79-
8077 var timeSpans = new TimeSpan [ ] { new ( 15 , 0 , 0 ) , new ( 16 , 0 , 0 ) , new ( 17 , 0 , 0 ) } ;
78+ var now = new DateTime ( 2025 , 8 , 20 , 10 , 0 , 0 ) ;
79+ var expected = new DateTime ( 2025 , 8 , 20 ) . Add ( timeSpans [ 0 ] ) ;
8180
8281 var fluentCalculator = new FluentTimeCalculator ( ) ;
8382 var calculator = ( ITimeCalculator ) fluentCalculator ;
84- var run = new EverydayUnit ( fluentCalculator ) ;
83+ var run = new RunSpecifier ( fluentCalculator ) ;
8584
8685 calculator . Now = ( ) => now ;
8786
8887 // Act
89- run . At ( timeSpans ) ;
88+ run . Everyday ( ) . At ( timeSpans ) ;
9089 var calculated = calculator . Calculate ( now ) ! ;
9190
9291 // Assert
9392 Equal ( expected , calculated . Value ) ;
94-
93+
9594 // Arrange
9695 now = now . AddHours ( 5.1 ) ;
97- expected = expected . AddHours ( 1 ) ;
96+ expected = expected . Date . Add ( timeSpans [ 1 ] ) ;
9897
9998 // Act
10099 calculated = calculator . Calculate ( now ) ! ;
@@ -104,7 +103,49 @@ public void AtMultipleTimeSpan()
104103
105104 // Arrange
106105 now = now . AddHours ( 1.1 ) ;
107- expected = expected . AddHours ( 1 ) ;
106+ expected = expected . Date . Add ( timeSpans [ 2 ] ) ;
107+
108+ // Act
109+ calculated = calculator . Calculate ( now ) ! ;
110+
111+ // Assert
112+ Equal ( expected , calculated . Value ) ;
113+
114+ // Arrange
115+ now = now . AddHours ( 1.1 ) ;
116+ expected = new DateTime ( 2025 , 8 , 21 , 15 , 0 , 0 ) ;
117+
118+ // Act
119+ calculated = calculator . Calculate ( now ) ! ;
120+
121+ // Assert
122+ Equal ( expected , calculated . Value ) ;
123+ }
124+
125+ [ Fact ]
126+ public void AtMultipleTimeSpan2 ( )
127+ {
128+ // Arrange
129+ var timeSpans = new TimeSpan [ ] { new ( 15 , 0 , 0 ) , new ( 16 , 0 , 0 ) , new ( 17 , 0 , 0 ) } ;
130+ var now = new DateTime ( 2025 , 8 , 20 , 15 , 1 , 0 ) ;
131+ var expected = new DateTime ( 2025 , 8 , 20 ) . Add ( timeSpans [ 1 ] ) ;
132+
133+ var fluentCalculator = new FluentTimeCalculator ( ) ;
134+ var calculator = ( ITimeCalculator ) fluentCalculator ;
135+ var run = new RunSpecifier ( fluentCalculator ) ;
136+
137+ calculator . Now = ( ) => now ;
138+
139+ // Act
140+ run . Everyday ( ) . At ( timeSpans ) ;
141+ var calculated = calculator . Calculate ( now ) ! ;
142+
143+ // Assert
144+ Equal ( expected , calculated . Value ) ;
145+
146+ // Arrange
147+ now = now . AddHours ( 1.1 ) ;
148+ expected = expected . Date . Add ( timeSpans [ 2 ] ) ;
108149
109150 // Act
110151 calculated = calculator . Calculate ( now ) ! ;
@@ -158,14 +199,11 @@ public void AtMultipleNullTimeSpan()
158199 }
159200
160201 [ Fact ]
161- public void Between17and19TimeSpan ( )
202+ public void EverydayAt15 ( )
162203 {
163204 // Arrange
164- var now = new DateTime ( 2025 , 08 , 24 , 16 , 30 , 0 ) ;
165- var expectedDate = new DateTime ( 2025 , 08 , 24 , 17 , 30 , 0 ) ;
166-
167- var from = new TimeSpan ( 17 , 30 , 0 ) ;
168- var to = new TimeSpan ( 19 , 30 , 0 ) ;
205+ var now = new DateTime ( 2025 , 08 , 24 , 14 , 30 , 0 ) ;
206+ var expectedDate = new DateTime ( 2025 , 08 , 24 , 15 , 0 , 0 ) ;
169207
170208 var fluentCalculator = new FluentTimeCalculator ( ) ;
171209 var calculator = ( ITimeCalculator ) fluentCalculator ;
@@ -174,22 +212,28 @@ public void Between17and19TimeSpan()
174212 calculator . Now = ( ) => now ;
175213
176214 // Act
177- run . Everyday ( ) . Between ( from , to ) ;
215+ run . Everyday ( ) . At ( 15 , 0 ) ;
178216 var calculated = calculator . Calculate ( now ) ! ;
179217
180218 // Assert
181219 Equal ( expectedDate , calculated . Value ) ;
182- }
183220
221+ now = expectedDate ;
222+
223+ calculated = calculator . Calculate ( expectedDate ) ! ;
224+
225+ expectedDate = expectedDate . AddDays ( 1 ) ;
226+
227+ // Assert
228+ Equal ( expectedDate , calculated . Value ) ;
229+ }
230+
184231 [ Fact ]
185- public void Between21and23TimeSpan ( )
232+ public void EverydayAt16 ( )
186233 {
187234 // Arrange
188- var now = new DateTime ( 2025 , 8 , 11 , 23 , 40 , 0 ) ;
189- var expectedDate = new DateTime ( 2025 , 08 , 12 , 21 , 30 , 0 ) ;
190-
191- var from = new TimeSpan ( 21 , 30 , 0 ) ;
192- var to = new TimeSpan ( 23 , 30 , 0 ) ;
235+ var now = new DateTime ( 2025 , 08 , 24 , 16 , 0 , 0 ) ;
236+ var expectedDate = new DateTime ( 2025 , 08 , 24 , 16 , 0 , 0 ) ;
193237
194238 var fluentCalculator = new FluentTimeCalculator ( ) ;
195239 var calculator = ( ITimeCalculator ) fluentCalculator ;
@@ -198,23 +242,31 @@ public void Between21and23TimeSpan()
198242 calculator . Now = ( ) => now ;
199243
200244 // Act
201- run . Everyday ( ) . Between ( from , to ) ;
202-
245+ run . Everyday ( ) . At ( 16 , 0 ) ;
203246 var calculated = calculator . Calculate ( now ) ! ;
204247
205248 // Assert
206249 Equal ( expectedDate , calculated . Value ) ;
250+
251+ now = expectedDate ;
252+
253+ calculated = calculator . Calculate ( expectedDate ) ! ;
254+
255+ expectedDate = expectedDate . AddDays ( 1 ) ;
256+
257+ // Assert
258+ Equal ( expectedDate , calculated . Value ) ;
207259 }
208260
209261 [ Fact ]
210- public void Between19and22TimeSpan ( )
262+ public void Between17and19TimeSpan ( )
211263 {
212264 // Arrange
213- var now = new DateTime ( 2025 , 08 , 19 , 23 , 50 , 0 ) ;
214- var expectedDate = new DateTime ( 2025 , 08 , 20 , 19 , 30 , 0 ) ;
265+ var now = new DateTime ( 2025 , 08 , 24 , 16 , 30 , 0 ) ;
266+ var expectedDate = new DateTime ( 2025 , 08 , 24 , 17 , 30 , 0 ) ;
215267
216- var from = new TimeSpan ( 19 , 30 , 0 ) ;
217- var to = new TimeSpan ( 22 , 30 , 0 ) ;
268+ var from = new TimeSpan ( 17 , 30 , 0 ) ;
269+ var to = new TimeSpan ( 19 , 30 , 0 ) ;
218270
219271 var fluentCalculator = new FluentTimeCalculator ( ) ;
220272 var calculator = ( ITimeCalculator ) fluentCalculator ;
@@ -228,19 +280,28 @@ public void Between19and22TimeSpan()
228280
229281 // Assert
230282 Equal ( expectedDate , calculated . Value ) ;
283+ }
231284
232- now = expectedDate . AddMinutes ( 5 ) ;
233- expectedDate = now ;
285+ [ Fact ]
286+ public void Between21and23TimeSpan ( )
287+ {
288+ // Arrange
289+ var now = new DateTime ( 2025 , 09 , 10 , 23 , 40 , 0 ) ;
290+ var expectedDate = new DateTime ( 2025 , 09 , 10 , 21 , 30 , 0 ) ;
234291
235- calculated = calculator . Calculate ( now ) ! ;
292+ var from = new TimeSpan ( 21 , 30 , 0 ) ;
293+ var to = new TimeSpan ( 23 , 30 , 0 ) ;
236294
237- // Assert
238- Equal ( expectedDate , calculated . Value ) ;
295+ var fluentCalculator = new FluentTimeCalculator ( ) ;
296+ var calculator = ( ITimeCalculator ) fluentCalculator ;
297+ var run = new RunSpecifier ( fluentCalculator ) ;
298+
299+ calculator . Now = ( ) => now ;
239300
240- now = new DateTime ( 2025 , 08 , 20 ) . Add ( to ) . AddMinutes ( 1 ) ;
241- expectedDate = new DateTime ( 2025 , 08 , 21 ) . Add ( from ) ;
301+ // Act
302+ run . Everyday ( ) . Between ( from , to ) ;
242303
243- calculated = calculator . Calculate ( now ) ! ;
304+ var calculated = calculator . Calculate ( now ) ! ;
244305
245306 // Assert
246307 Equal ( expectedDate , calculated . Value ) ;
@@ -269,31 +330,8 @@ public void Between23and2TimeSpan()
269330 // Assert
270331 Equal ( expectedDate , calculated . Value ) ;
271332
272- // Arrange
273- now = now . AddHours ( 1 ) ;
274- expectedDate = now ;
275-
276- // Act
277- calculated = calculator . Calculate ( now ) ! ;
278-
279- // Assert
280- Equal ( expectedDate , calculated . Value ) ;
281-
282- // Arrange
283- now = now . AddHours ( 2 ) ;
284- expectedDate = now ;
333+ expectedDate = expectedDate . AddDays ( 1 ) ;
285334
286- // Act
287- calculated = calculator . Calculate ( now ) ! ;
288-
289- // Assert
290- Equal ( expectedDate , calculated . Value ) ;
291-
292- // Arrange
293- now = now . AddHours ( 6 ) ;
294- expectedDate = new DateTime ( 2025 , 08 , 25 , 23 , 0 , 0 ) ;
295-
296- // Act
297335 calculated = calculator . Calculate ( now ) ! ;
298336
299337 // Assert
@@ -320,31 +358,8 @@ public void Between23and2()
320358 // Assert
321359 Equal ( expectedDate , calculated . Value ) ;
322360
323- // Arrange
324- now = now . AddHours ( 1 ) ;
325- expectedDate = now ;
361+ expectedDate = expectedDate . AddDays ( 1 ) ;
326362
327- // Act
328- calculated = calculator . Calculate ( now ) ! ;
329-
330- // Assert
331- Equal ( expectedDate , calculated . Value ) ;
332-
333- // Arrange
334- now = now . AddHours ( 2 ) ;
335- expectedDate = now ;
336-
337- // Act
338- calculated = calculator . Calculate ( now ) ! ;
339-
340- // Assert
341- Equal ( expectedDate , calculated . Value ) ;
342-
343- // Arrange
344- now = now . AddHours ( 6 ) ;
345- expectedDate = new DateTime ( 2025 , 08 , 25 , 23 , 0 , 0 ) ;
346-
347- // Act
348363 calculated = calculator . Calculate ( now ) ! ;
349364
350365 // Assert
@@ -355,8 +370,8 @@ public void Between23and2()
355370 public void Between19and22 ( )
356371 {
357372 // Arrange
358- var now = new DateTime ( 2025 , 08 , 19 , 23 , 50 , 0 ) ;
359- var expectedDate = new DateTime ( 2025 , 08 , 20 , 19 , 30 , 0 ) ;
373+ var now = new DateTime ( 2025 , 08 , 24 , 20 , 0 , 0 ) ;
374+ var expectedDate = new DateTime ( 2025 , 08 , 24 , 20 , 0 , 0 ) ;
360375
361376 var fluentCalculator = new FluentTimeCalculator ( ) ;
362377 var calculator = ( ITimeCalculator ) fluentCalculator ;
@@ -365,24 +380,22 @@ public void Between19and22()
365380 calculator . Now = ( ) => now ;
366381
367382 // Act
368- run . Everyday ( ) . Between ( 19 , 30 , 22 , 30 ) ;
383+ run . Everyday ( ) . Between ( 19 , 0 , 22 , 0 ) ;
369384 var calculated = calculator . Calculate ( now ) ! ;
370385
371386 // Assert
372387 Equal ( expectedDate , calculated . Value ) ;
373388
374- now = expectedDate . AddMinutes ( 5 ) ;
375- expectedDate = now ;
389+ calculated = calculator . Calculate ( expectedDate ) ! ;
376390
377- calculated = calculator . Calculate ( now ) ! ;
391+ expectedDate = expectedDate . Date . AddDays ( 1 ) . Add ( new TimeSpan ( 19 , 0 , 0 ) ) ;
378392
379393 // Assert
380394 Equal ( expectedDate , calculated . Value ) ;
381395
382- now = new DateTime ( 2025 , 08 , 20 ) . Add ( new TimeSpan ( 22 , 30 , 0 ) ) . AddMinutes ( 1 ) ;
383- expectedDate = new DateTime ( 2025 , 08 , 21 ) . Add ( new TimeSpan ( 19 , 30 , 0 ) ) ;
396+ calculated = calculator . Calculate ( expectedDate ) ! ;
384397
385- calculated = calculator . Calculate ( now ) ! ;
398+ expectedDate = expectedDate . AddDays ( 1 ) ;
386399
387400 // Assert
388401 Equal ( expectedDate , calculated . Value ) ;
0 commit comments