Skip to content

Commit 1abcb95

Browse files
committed
[test] Don’t report failures when weakCompareExchange to spuriously fails
1 parent 5b1941e commit 1abcb95

27 files changed

+7828
-5997
lines changed

Tests/AtomicsTests/Basics/BasicTests.gyb-template

Lines changed: 106 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -125,37 +125,36 @@ class BasicAtomic${label}Tests: XCTestCase {
125125

126126
% end
127127

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}() {
131130
let v: UnsafeAtomic<${type}> = .create(${a})
132131
defer { v.destroy() }
133132

134-
var (exchanged, original): (Bool, ${type}) = v.${operation}(
133+
var (exchanged, original): (Bool, ${type}) = v.compareExchange(
135134
expected: ${a},
136135
desired: ${b},
137136
ordering: .${order})
138137
XCTAssertTrue(exchanged)
139138
XCTAssertEqual(original, ${a})
140139
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
141140

142-
(exchanged, original) = v.${operation}(
141+
(exchanged, original) = v.compareExchange(
143142
expected: ${a},
144143
desired: ${b},
145144
ordering: .${order})
146145
XCTAssertFalse(exchanged)
147146
XCTAssertEqual(original, ${b})
148147
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
149148

150-
(exchanged, original) = v.${operation}(
149+
(exchanged, original) = v.compareExchange(
151150
expected: ${b},
152151
desired: ${a},
153152
ordering: .${order})
154153
XCTAssertTrue(exchanged)
155154
XCTAssertEqual(original, ${b})
156155
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
157156

158-
(exchanged, original) = v.${operation}(
157+
(exchanged, original) = v.compareExchange(
159158
expected: ${b},
160159
desired: ${a},
161160
ordering: .${order})
@@ -164,17 +163,59 @@ class BasicAtomic${label}Tests: XCTestCase {
164163
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
165164
}
166165

167-
% end
168166
% end
169167

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}() {
174215
let v: UnsafeAtomic<${type}> = .create(${a})
175216
defer { v.destroy() }
176217

177-
var (exchanged, original): (Bool, ${type}) = v.${operation}(
218+
var (exchanged, original): (Bool, ${type}) = v.compareExchange(
178219
expected: ${a},
179220
desired: ${b},
180221
successOrdering: .${successorder},
@@ -183,7 +224,7 @@ class BasicAtomic${label}Tests: XCTestCase {
183224
XCTAssertEqual(original, ${a})
184225
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
185226

186-
(exchanged, original) = v.${operation}(
227+
(exchanged, original) = v.compareExchange(
187228
expected: ${a},
188229
desired: ${b},
189230
successOrdering: .${successorder},
@@ -192,7 +233,7 @@ class BasicAtomic${label}Tests: XCTestCase {
192233
XCTAssertEqual(original, ${b})
193234
XCTAssertEqual(v.load(ordering: .relaxed), ${b})
194235

195-
(exchanged, original) = v.${operation}(
236+
(exchanged, original) = v.compareExchange(
196237
expected: ${b},
197238
desired: ${a},
198239
successOrdering: .${successorder},
@@ -201,7 +242,56 @@ class BasicAtomic${label}Tests: XCTestCase {
201242
XCTAssertEqual(original, ${b})
202243
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
203244

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(
205295
expected: ${b},
206296
desired: ${a},
207297
successOrdering: .${successorder},
@@ -211,7 +301,6 @@ class BasicAtomic${label}Tests: XCTestCase {
211301
XCTAssertEqual(v.load(ordering: .relaxed), ${a})
212302
}
213303

214-
% end
215304
% end
216305
% end
217306

0 commit comments

Comments
 (0)