99// UNSUPPORTED: back_deployment_runtime
1010// UNSUPPORTED: back_deploy_concurrency
1111
12- // This test is disabled because it seems to require dedicated CPU access:
13- // REQUIRES: rdar94451729
14-
1512import _Concurrency
1613import StdlibUnittest
1714
1815var tests = TestSuite ( " Time " )
1916
2017@main struct Main {
2118 static func main( ) async {
22- tests. test ( " ContinuousClock sleep " ) {
19+ tests. test ( " ContinuousClock sleep " )
20+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
21+ . code {
2322 let clock = ContinuousClock ( )
2423 let elapsed = await clock. measure {
2524 try ! await clock. sleep ( until: . now + . milliseconds( 100 ) )
@@ -29,7 +28,9 @@ var tests = TestSuite("Time")
2928 expectLT ( elapsed, . milliseconds( 1000 ) )
3029 }
3130
32- tests. test ( " ContinuousClock sleep with tolerance " ) {
31+ tests. test ( " ContinuousClock sleep with tolerance " )
32+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
33+ . code {
3334 let clock = ContinuousClock ( )
3435 let elapsed = await clock. measure {
3536 try ! await clock. sleep ( until: . now + . milliseconds( 100 ) , tolerance: . milliseconds( 100 ) )
@@ -39,15 +40,19 @@ var tests = TestSuite("Time")
3940 expectLT ( elapsed, . milliseconds( 2000 ) )
4041 }
4142
42- tests. test ( " ContinuousClock sleep longer " ) {
43+ tests. test ( " ContinuousClock sleep longer " )
44+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
45+ . code {
4346 let elapsed = await ContinuousClock ( ) . measure {
4447 try ! await Task . sleep ( until: . now + . seconds( 1 ) , clock: . continuous)
4548 }
4649 expectGT ( elapsed, . seconds( 1 ) - . milliseconds( 90 ) )
4750 expectLT ( elapsed, . seconds( 1 ) + . milliseconds( 1000 ) )
4851 }
4952
50- tests. test ( " SuspendingClock sleep " ) {
53+ tests. test ( " SuspendingClock sleep " )
54+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
55+ . code {
5156 let clock = SuspendingClock ( )
5257 let elapsed = await clock. measure {
5358 try ! await clock. sleep ( until: . now + . milliseconds( 100 ) )
@@ -57,7 +62,9 @@ var tests = TestSuite("Time")
5762 expectLT ( elapsed, . milliseconds( 1000 ) )
5863 }
5964
60- tests. test ( " SuspendingClock sleep with tolerance " ) {
65+ tests. test ( " SuspendingClock sleep with tolerance " )
66+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
67+ . code {
6168 let clock = SuspendingClock ( )
6269 let elapsed = await clock. measure {
6370 try ! await clock. sleep ( until: . now + . milliseconds( 100 ) , tolerance: . milliseconds( 100 ) )
@@ -67,7 +74,9 @@ var tests = TestSuite("Time")
6774 expectLT ( elapsed, . milliseconds( 2000 ) )
6875 }
6976
70- tests. test ( " SuspendingClock sleep longer " ) {
77+ tests. test ( " SuspendingClock sleep longer " )
78+ . skip ( . always( " failed despite increased timeout (rdar://94451729) " ) )
79+ . code {
7180 let elapsed = await SuspendingClock ( ) . measure {
7281 try ! await Task . sleep ( until: . now + . seconds( 1 ) , clock: . suspending)
7382 }
@@ -110,6 +119,44 @@ var tests = TestSuite("Time")
110119 expectEqual ( twoSeconds, . seconds( 2 ) )
111120 }
112121
122+ tests. test ( " Duration components/whole second increments " ) {
123+ for i in 0 ..< 1_000_000 {
124+ let d = Duration . seconds ( i)
125+ let comps = d. components
126+ expectEqual ( comps. seconds, Int64 ( i) )
127+ expectEqual ( comps. attoseconds, 0 )
128+ }
129+ }
130+
131+ tests. test ( " Duration components/1ms increments " ) {
132+ for i in 0 ..< 1_000_000 {
133+ let d = Duration . milliseconds ( i)
134+ let comps = d. components
135+ expectEqual ( comps. seconds, Int64 ( i / 1000 ) )
136+ expectEqual ( comps. attoseconds, Int64 ( i % 1000 ) * 1_000_000_000_000_000 )
137+ }
138+ }
139+
140+ tests. test ( " Duration components/100µs increments " ) {
141+ for i in 0 ..< 1_000_000 {
142+ let ms = 100 * i
143+ let d = Duration . microseconds ( ms)
144+ let comps = d. components
145+ expectEqual ( comps. seconds, Int64 ( ms / 1_000_000 ) )
146+ expectEqual ( comps. attoseconds, Int64 ( ms % 1_000_000 ) * 1_000_000_000_000 )
147+ }
148+ }
149+
150+ tests. test ( " Duration components/200ns increments " ) {
151+ for i in 0 ..< 1_000_000 {
152+ let ns = 200 * i
153+ let d = Duration . nanoseconds ( ns)
154+ let comps = d. components
155+ expectEqual ( comps. seconds, Int64 ( ns / 1_000_000_000 ) )
156+ expectEqual ( comps. attoseconds, Int64 ( ns % 1_000_000_000 ) * 1_000_000_000 )
157+ }
158+ }
159+
113160 await runAllTestsAsync ( )
114161 }
115162}
0 commit comments