@@ -252,4 +252,43 @@ UnsafeMutableRawPointerExtraTestSuite.test("withMemoryRebound") {
252
252
}
253
253
}
254
254
255
+ UnsafeMutableRawPointerExtraTestSuite . test ( " realignment-functions " ) {
256
+ var m = UnsafeMutableRawPointer ( bitPattern: 1 ) !
257
+ expectEqual ( m. alignedUp ( for: Int64 . self) , . init( bitPattern: 8 ) !)
258
+ expectEqual ( m. alignedUp ( for: Int32 . self) , . init( bitPattern: 4 ) !)
259
+ expectEqual ( m. alignedUp ( toMultipleOf: 8 ) , . init( bitPattern: 8 ) !)
260
+ expectEqual ( m. alignedUp ( toMultipleOf: 16 ) , . init( bitPattern: 16 ) !)
261
+
262
+ m = . init( bitPattern: 13 ) !
263
+ expectEqual ( m. alignedDown ( for: Int64 . self) , . init( bitPattern: 8 ) !)
264
+ expectEqual ( m. alignedDown ( for: Int32 . self) , . init( bitPattern: 12 ) !)
265
+ expectEqual ( m. alignedDown ( toMultipleOf: 8 ) , . init( bitPattern: 8 ) !)
266
+ expectEqual ( m. alignedDown ( toMultipleOf: 4 ) , . init( bitPattern: 12 ) !)
267
+
268
+ var p = UnsafeRawPointer ( bitPattern: 1 ) !
269
+ expectEqual ( p. alignedUp ( for: Int64 . self) , . init( bitPattern: 8 ) !)
270
+ expectEqual ( p. alignedUp ( for: Int32 . self) , . init( bitPattern: 4 ) !)
271
+ expectEqual ( p. alignedUp ( toMultipleOf: 8 ) , . init( bitPattern: 8 ) !)
272
+ expectEqual ( p. alignedUp ( toMultipleOf: 16 ) , . init( bitPattern: 16 ) !)
273
+
274
+ p = . init( bitPattern: 13 ) !
275
+ expectEqual ( p. alignedDown ( for: Int64 . self) , . init( bitPattern: 8 ) !)
276
+ expectEqual ( p. alignedDown ( for: Int32 . self) , . init( bitPattern: 12 ) !)
277
+ expectEqual ( p. alignedDown ( toMultipleOf: 8 ) , . init( bitPattern: 8 ) !)
278
+ expectEqual ( p. alignedDown ( toMultipleOf: 4 ) , . init( bitPattern: 12 ) !)
279
+ }
280
+
281
+ UnsafeMutableRawPointerExtraTestSuite . test ( " pointer-comparisons " ) {
282
+ let a = UnsafeMutableRawPointer ( bitPattern: 0x8000 ) !
283
+ let b = UnsafeRawPointer ( bitPattern: 0x9000 ) !
284
+
285
+ expectTrue ( a. assumingMemoryBound ( to: Int . self) == UnsafeRawPointer ( a) )
286
+ expectTrue ( b. assumingMemoryBound ( to: UInt . self) >= b)
287
+ expectTrue ( a <= a. assumingMemoryBound ( to: Double . self) )
288
+
289
+ expectTrue ( a. assumingMemoryBound ( to: Int . self) != b)
290
+ expectTrue ( b. assumingMemoryBound ( to: UInt . self) > UnsafeMutableRawPointer ( a) )
291
+ expectTrue ( a < b. assumingMemoryBound ( to: Double . self) )
292
+ }
293
+
255
294
runAllTests ( )
0 commit comments