@@ -138,7 +138,44 @@ final class ScheduleBuilderTests: XCTestCase {
138138 Date ( year: 2020 , month: 5 , day: 23 , hour: 14 , minute: 58 )
139139 )
140140 }
141-
141+
142+ func testEveryWeeksBuilder( ) throws {
143+ let builder = ScheduleBuilder ( )
144+ builder. every ( weeks: 3 )
145+ let now = Date ( hour: 5 , minute: 0 )
146+ XCTAssertEqual ( builder. nextDate ( current: now) , Date ( day: 22 , hour: 5 ) )
147+ }
148+
149+ func testEveryDaysBuilder( ) throws {
150+ let builder = ScheduleBuilder ( )
151+ builder. every ( days: 9 )
152+ let now = Date ( hour: 5 , minute: 0 )
153+ XCTAssertEqual ( builder. nextDate ( current: now) , Date ( day: 10 , hour: 5 ) )
154+ }
155+
156+ func testEveryMinutesBuilder( ) throws {
157+ let builder = ScheduleBuilder ( )
158+ builder. every ( minutes: 30 )
159+ let now = Date ( hour: 5 , minute: 0 )
160+ XCTAssertEqual ( builder. nextDate ( current: now) , Date ( hour: 5 , minute: 30 ) )
161+ XCTAssertEqual ( builder. nextDate ( current: Date ( hour: 5 , minute: 30 ) ) , Date ( hour: 6 , minute: 0 ) )
162+ }
163+
164+ func testEveryHoursBuilder( ) throws {
165+ let builder = ScheduleBuilder ( )
166+ builder. every ( hours: 5 )
167+ let now = Date ( hour: 0 , minute: 0 )
168+ XCTAssertEqual ( builder. nextDate ( current: now) , Date ( hour: 5 , minute: 0 ) )
169+ XCTAssertEqual ( builder. nextDate ( current: Date ( hour: 5 , minute: 0 ) ) , Date ( hour: 10 , minute: 0 ) )
170+ }
171+
172+ func testEverySecondsBuilder( ) throws {
173+ let builder = ScheduleBuilder ( )
174+ builder. every ( seconds: 90 )
175+ let now = Date ( hour: 1 , minute: 0 , second: 0 )
176+ XCTAssertEqual ( builder. nextDate ( current: now) , Date ( hour: 1 , minute: 1 , second: 30 ) )
177+ }
178+
142179 func testCustomCalendarBuilder( ) throws {
143180 let est = Calendar . calendar ( timezone: " EST " )
144181 let mst = Calendar . calendar ( timezone: " MST " )
0 commit comments