@@ -1285,10 +1285,9 @@ StringTests.test("String.decodeCString/UTF32") {
1285
1285
internal struct ReplaceSubrangeTest {
1286
1286
let original : String
1287
1287
let newElements : String
1288
- // RangeSelection is defined in CheckRangeReplaceableCollectionType
1289
1288
let rangeSelection : RangeSelection
1290
1289
let expected : String
1291
- let closedExpected : String ? // Expected array for closed ranges
1290
+ let closedExpected : String ?
1292
1291
let loc : SourceLoc
1293
1292
1294
1293
internal init (
@@ -1322,49 +1321,57 @@ let replaceSubrangeTests = [
1322
1321
original: " eela " ,
1323
1322
newElements: " m " ,
1324
1323
rangeSelection: . leftEdge,
1325
- expected: " meela "
1324
+ expected: " meela " ,
1325
+ closedExpected: " mela "
1326
1326
) ,
1327
1327
ReplaceSubrangeTest (
1328
1328
original: " meel " ,
1329
1329
newElements: " a " ,
1330
1330
rangeSelection: . rightEdge,
1331
- expected: " meela "
1331
+ expected: " meela " ,
1332
+ closedExpected: " meea "
1332
1333
) ,
1333
1334
ReplaceSubrangeTest (
1334
1335
original: " a " ,
1335
1336
newElements: " meel " ,
1336
1337
rangeSelection: . leftEdge,
1337
- expected: " meela "
1338
+ expected: " meela " ,
1339
+ closedExpected: " meel "
1338
1340
) ,
1339
1341
ReplaceSubrangeTest (
1340
1342
original: " m " ,
1341
1343
newElements: " eela " ,
1342
1344
rangeSelection: . rightEdge,
1343
- expected: " meela "
1345
+ expected: " meela " ,
1346
+ closedExpected: " eela "
1344
1347
) ,
1345
1348
ReplaceSubrangeTest (
1346
1349
original: " alice " ,
1347
1350
newElements: " bob " ,
1348
1351
rangeSelection: . offsets( 1 , 1 ) ,
1349
- expected: " aboblice "
1352
+ expected: " aboblice " ,
1353
+ closedExpected: " abobice "
1350
1354
) ,
1351
1355
ReplaceSubrangeTest (
1352
1356
original: " alice " ,
1353
1357
newElements: " bob " ,
1354
1358
rangeSelection: . offsets( 1 , 2 ) ,
1355
- expected: " abobice "
1359
+ expected: " abobice " ,
1360
+ closedExpected: " abobce "
1356
1361
) ,
1357
1362
ReplaceSubrangeTest (
1358
1363
original: " alice " ,
1359
1364
newElements: " bob " ,
1360
1365
rangeSelection: . offsets( 1 , 3 ) ,
1361
- expected: " abobce "
1366
+ expected: " abobce " ,
1367
+ closedExpected: " abobe "
1362
1368
) ,
1363
1369
ReplaceSubrangeTest (
1364
1370
original: " alice " ,
1365
1371
newElements: " bob " ,
1366
1372
rangeSelection: . offsets( 1 , 4 ) ,
1367
- expected: " abobe "
1373
+ expected: " abobe " ,
1374
+ closedExpected: " abob "
1368
1375
) ,
1369
1376
ReplaceSubrangeTest (
1370
1377
original: " alice " ,
@@ -1376,7 +1383,8 @@ let replaceSubrangeTests = [
1376
1383
original: " bob " ,
1377
1384
newElements: " meela " ,
1378
1385
rangeSelection: . offsets( 1 , 2 ) ,
1379
- expected: " bmeelab "
1386
+ expected: " bmeelab " ,
1387
+ closedExpected: " bmeela "
1380
1388
) ,
1381
1389
]
1382
1390
@@ -1407,4 +1415,37 @@ StringTests.test("String.replaceSubrange()/string/range") {
1407
1415
}
1408
1416
}
1409
1417
1418
+ StringTests . test ( " String.replaceSubrange()/characters/closedRange " ) {
1419
+ for test in replaceSubrangeTests {
1420
+ guard let closedExpected = test. closedExpected else {
1421
+ continue
1422
+ }
1423
+ var theString = test. original
1424
+ let c = test. original. characters
1425
+ let rangeToReplace = test. rangeSelection. closedRange ( in: c)
1426
+ let newCharacters = Array ( test. newElements. characters)
1427
+ theString. replaceSubrange ( rangeToReplace, with: newCharacters)
1428
+ expectEqual (
1429
+ theString,
1430
+ closedExpected,
1431
+ stackTrace: SourceLocStack ( ) . with ( test. loc) )
1432
+ }
1433
+ }
1434
+
1435
+ StringTests . test ( " String.replaceSubrange()/string/closedRange " ) {
1436
+ for test in replaceSubrangeTests {
1437
+ guard let closedExpected = test. closedExpected else {
1438
+ continue
1439
+ }
1440
+ var theString = test. original
1441
+ let c = test. original. characters
1442
+ let rangeToReplace = test. rangeSelection. closedRange ( in: c)
1443
+ theString. replaceSubrange ( rangeToReplace, with: test. newElements)
1444
+ expectEqual (
1445
+ theString,
1446
+ closedExpected,
1447
+ stackTrace: SourceLocStack ( ) . with ( test. loc) )
1448
+ }
1449
+ }
1450
+
1410
1451
runAllTests ( )
0 commit comments