@@ -252,4 +252,43 @@ UnsafeMutableRawPointerExtraTestSuite.test("withMemoryRebound") {
252252 }
253253}
254254
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+
255294runAllTests ( )
0 commit comments