@@ -58,4 +58,76 @@ UnsafeRawPointerTestSuite.test("load.unaligned.largeAlignment.mutablePointer")
58
58
}
59
59
}
60
60
61
+ UnsafeRawPointerTestSuite . test ( " alignedUp.for.overflow " ) {
62
+ let p = UnsafeRawPointer ( bitPattern: 1 - MemoryLayout< Int> . stride) !
63
+ if _isDebugAssertConfiguration ( ) {
64
+ expectCrashLater ( )
65
+ }
66
+ let up = p. alignedUp ( for: Int . self)
67
+ expectEqual ( Int ( bitPattern: up) , 0 )
68
+ }
69
+
70
+ UnsafeRawPointerTestSuite . test ( " alignedUp.toMultiple.overflow " ) {
71
+ let p = UnsafeRawPointer ( bitPattern: - 7 ) !
72
+ if _isDebugAssertConfiguration ( ) {
73
+ expectCrashLater ( )
74
+ }
75
+ let up = p. alignedUp ( toMultipleOf: 8 )
76
+ expectEqual ( Int ( bitPattern: up) , 0 )
77
+ }
78
+
79
+ UnsafeRawPointerTestSuite . test ( " alignedUp.for.overflow " ) {
80
+ let p = UnsafeRawPointer ( bitPattern: MemoryLayout < Int64 > . stride- 1 ) !
81
+ if _isDebugAssertConfiguration ( ) {
82
+ expectCrashLater ( )
83
+ }
84
+ let up = p. alignedDown ( for: Int64 . self)
85
+ expectEqual ( Int ( bitPattern: up) , 0 )
86
+ }
87
+
88
+ UnsafeRawPointerTestSuite . test ( " alignedUp.toMultiple.overflow " ) {
89
+ let p = UnsafeRawPointer ( bitPattern: 13 ) !
90
+ if _isDebugAssertConfiguration ( ) {
91
+ expectCrashLater ( )
92
+ }
93
+ let up = p. alignedDown ( toMultipleOf: 16 )
94
+ expectEqual ( Int ( bitPattern: up) , 0 )
95
+ }
96
+
97
+ UnsafeRawPointerTestSuite . test ( " alignedUp.for.overflow.mutable " ) {
98
+ let p = UnsafeMutableRawPointer ( bitPattern: 1 - MemoryLayout< Int> . stride) !
99
+ if _isDebugAssertConfiguration ( ) {
100
+ expectCrashLater ( )
101
+ }
102
+ let up = p. alignedUp ( for: Int . self)
103
+ expectEqual ( Int ( bitPattern: up) , 0 )
104
+ }
105
+
106
+ UnsafeRawPointerTestSuite . test ( " alignedUp.toMultiple.overflow.mutable " ) {
107
+ let p = UnsafeMutableRawPointer ( bitPattern: - 7 ) !
108
+ if _isDebugAssertConfiguration ( ) {
109
+ expectCrashLater ( )
110
+ }
111
+ let up = p. alignedUp ( toMultipleOf: 8 )
112
+ expectEqual ( Int ( bitPattern: up) , 0 )
113
+ }
114
+
115
+ UnsafeRawPointerTestSuite . test ( " alignedUp.for.overflow.mutable " ) {
116
+ let p = UnsafeMutableRawPointer ( bitPattern: MemoryLayout < Int64 > . stride- 1 ) !
117
+ if _isDebugAssertConfiguration ( ) {
118
+ expectCrashLater ( )
119
+ }
120
+ let up = p. alignedDown ( for: Int64 . self)
121
+ expectEqual ( Int ( bitPattern: up) , 0 )
122
+ }
123
+
124
+ UnsafeRawPointerTestSuite . test ( " alignedUp.toMultiple.overflow.mutable " ) {
125
+ let p = UnsafeMutableRawPointer ( bitPattern: 13 ) !
126
+ if _isDebugAssertConfiguration ( ) {
127
+ expectCrashLater ( )
128
+ }
129
+ let up = p. alignedDown ( toMultipleOf: 16 )
130
+ expectEqual ( Int ( bitPattern: up) , 0 )
131
+ }
132
+
61
133
runAllTests ( )
0 commit comments