@@ -125,37 +125,36 @@ class BasicAtomic${label}Tests: XCTestCase {
125
125
126
126
% end
127
127
128
- % for operation in ["compareExchange", "weakCompareExchange"]:
129
- % for (order, _, _, _, _) in updateOrderings:
130
- func test_${operation}_${order}() {
128
+ % for (order, _, _, _, _) in updateOrderings:
129
+ func test_compareExchange_${order}() {
131
130
let v: UnsafeAtomic<${type}> = .create(${a})
132
131
defer { v.destroy() }
133
132
134
- var (exchanged, original): (Bool, ${type}) = v.${operation} (
133
+ var (exchanged, original): (Bool, ${type}) = v.compareExchange (
135
134
expected: ${a},
136
135
desired: ${b},
137
136
ordering: .${order})
138
137
XCTAssertTrue(exchanged)
139
138
XCTAssertEqual(original, ${a})
140
139
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
141
140
142
- (exchanged, original) = v.${operation} (
141
+ (exchanged, original) = v.compareExchange (
143
142
expected: ${a},
144
143
desired: ${b},
145
144
ordering: .${order})
146
145
XCTAssertFalse(exchanged)
147
146
XCTAssertEqual(original, ${b})
148
147
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
149
148
150
- (exchanged, original) = v.${operation} (
149
+ (exchanged, original) = v.compareExchange (
151
150
expected: ${b},
152
151
desired: ${a},
153
152
ordering: .${order})
154
153
XCTAssertTrue(exchanged)
155
154
XCTAssertEqual(original, ${b})
156
155
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
157
156
158
- (exchanged, original) = v.${operation} (
157
+ (exchanged, original) = v.compareExchange (
159
158
expected: ${b},
160
159
desired: ${a},
161
160
ordering: .${order})
@@ -164,17 +163,59 @@ class BasicAtomic${label}Tests: XCTestCase {
164
163
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
165
164
}
166
165
167
- % end
168
166
% end
169
167
170
- % for operation in ["compareExchange", "weakCompareExchange"]:
171
- % for (successorder, _, _, _, _) in updateOrderings:
172
- % for (failorder, _, _, _) in loadOrderings:
173
- func test_${operation}_${successorder}_${failorder}() {
168
+ % for (order, _, _, _, _) in updateOrderings:
169
+ func test_weakCompareExchange_${order}() {
170
+ let v: UnsafeAtomic<${type}> = .create(${a})
171
+ defer { v.destroy() }
172
+
173
+ var (exchanged, original): (Bool, ${type})
174
+
175
+ repeat {
176
+ (exchanged, original) = v.weakCompareExchange(
177
+ expected: ${a},
178
+ desired: ${b},
179
+ ordering: .${order})
180
+ } while !exchanged
181
+ XCTAssertEqual(original, ${a})
182
+ XCTAssertEqual(v.load(ordering: .relaxed), ${b})
183
+
184
+ (exchanged, original) = v.weakCompareExchange(
185
+ expected: ${a},
186
+ desired: ${b},
187
+ ordering: .${order})
188
+ XCTAssertFalse(exchanged)
189
+ XCTAssertEqual(original, ${b})
190
+ XCTAssertEqual(v.load(ordering: .relaxed), ${b})
191
+
192
+ repeat {
193
+ (exchanged, original) = v.weakCompareExchange(
194
+ expected: ${b},
195
+ desired: ${a},
196
+ ordering: .${order})
197
+ } while !exchanged
198
+ XCTAssertEqual(original, ${b})
199
+ XCTAssertEqual(v.load(ordering: .relaxed), ${a})
200
+
201
+ (exchanged, original) = v.weakCompareExchange(
202
+ expected: ${b},
203
+ desired: ${a},
204
+ ordering: .${order})
205
+ XCTAssertFalse(exchanged)
206
+ XCTAssertEqual(original, ${a})
207
+ XCTAssertEqual(v.load(ordering: .relaxed), ${a})
208
+ }
209
+
210
+ % end
211
+
212
+ % for (successorder, _, _, _, _) in updateOrderings:
213
+ % for (failorder, _, _, _) in loadOrderings:
214
+ func test_compareExchange_${successorder}_${failorder}() {
174
215
let v: UnsafeAtomic<${type}> = .create(${a})
175
216
defer { v.destroy() }
176
217
177
- var (exchanged, original): (Bool, ${type}) = v.${operation} (
218
+ var (exchanged, original): (Bool, ${type}) = v.compareExchange (
178
219
expected: ${a},
179
220
desired: ${b},
180
221
successOrdering: .${successorder},
@@ -183,7 +224,7 @@ class BasicAtomic${label}Tests: XCTestCase {
183
224
XCTAssertEqual(original, ${a})
184
225
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
185
226
186
- (exchanged, original) = v.${operation} (
227
+ (exchanged, original) = v.compareExchange (
187
228
expected: ${a},
188
229
desired: ${b},
189
230
successOrdering: .${successorder},
@@ -192,7 +233,7 @@ class BasicAtomic${label}Tests: XCTestCase {
192
233
XCTAssertEqual(original, ${b})
193
234
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
194
235
195
- (exchanged, original) = v.${operation} (
236
+ (exchanged, original) = v.compareExchange (
196
237
expected: ${b},
197
238
desired: ${a},
198
239
successOrdering: .${successorder},
@@ -201,7 +242,56 @@ class BasicAtomic${label}Tests: XCTestCase {
201
242
XCTAssertEqual(original, ${b})
202
243
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
203
244
204
- (exchanged, original) = v.${operation}(
245
+ (exchanged, original) = v.compareExchange(
246
+ expected: ${b},
247
+ desired: ${a},
248
+ successOrdering: .${successorder},
249
+ failureOrdering: .${failorder})
250
+ XCTAssertFalse(exchanged)
251
+ XCTAssertEqual(original, ${a})
252
+ XCTAssertEqual(v.load(ordering: .relaxed), ${a})
253
+ }
254
+
255
+ % end
256
+ % end
257
+
258
+ % for (successorder, _, _, _, _) in updateOrderings:
259
+ % for (failorder, _, _, _) in loadOrderings:
260
+ func test_weakCompareExchange_${successorder}_${failorder}() {
261
+ let v: UnsafeAtomic<${type}> = .create(${a})
262
+ defer { v.destroy() }
263
+
264
+ var (exchanged, original): (Bool, ${type})
265
+ repeat {
266
+ (exchanged, original) = v.weakCompareExchange(
267
+ expected: ${a},
268
+ desired: ${b},
269
+ successOrdering: .${successorder},
270
+ failureOrdering: .${failorder})
271
+ } while !exchanged
272
+ XCTAssertEqual(original, ${a})
273
+ XCTAssertEqual(v.load(ordering: .relaxed), ${b})
274
+
275
+ (exchanged, original) = v.weakCompareExchange(
276
+ expected: ${a},
277
+ desired: ${b},
278
+ successOrdering: .${successorder},
279
+ failureOrdering: .${failorder})
280
+ XCTAssertFalse(exchanged)
281
+ XCTAssertEqual(original, ${b})
282
+ XCTAssertEqual(v.load(ordering: .relaxed), ${b})
283
+
284
+ repeat {
285
+ (exchanged, original) = v.weakCompareExchange(
286
+ expected: ${b},
287
+ desired: ${a},
288
+ successOrdering: .${successorder},
289
+ failureOrdering: .${failorder})
290
+ } while !exchanged
291
+ XCTAssertEqual(original, ${b})
292
+ XCTAssertEqual(v.load(ordering: .relaxed), ${a})
293
+
294
+ (exchanged, original) = v.weakCompareExchange(
205
295
expected: ${b},
206
296
desired: ${a},
207
297
successOrdering: .${successorder},
@@ -211,7 +301,6 @@ class BasicAtomic${label}Tests: XCTestCase {
211
301
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
212
302
}
213
303
214
- % end
215
304
% end
216
305
% end
217
306
0 commit comments