mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[test] renaming test/1_stdlib to just test/stdlib
This commit is contained in:
37
test/stdlib/StringReallocation.swift
Normal file
37
test/stdlib/StringReallocation.swift
Normal file
@@ -0,0 +1,37 @@
|
||||
// RUN: %target-run-simple-swift | %FileCheck %s
|
||||
// REQUIRES: executable_test
|
||||
|
||||
// CHECK-NOT: Reallocations exceeded 30
|
||||
func testReallocation() {
|
||||
var x = "The quick brown fox jumped over the lazy dog\n"._split(separator: " ")
|
||||
|
||||
var story = "Let me tell you a story:"
|
||||
var laps = 1000
|
||||
|
||||
var reallocations = 0
|
||||
for i in 0..<laps {
|
||||
for s in x {
|
||||
var lastBase = story._core._baseAddress
|
||||
story += " "
|
||||
story += s
|
||||
if lastBase != story._core._baseAddress {
|
||||
reallocations += 1
|
||||
|
||||
// To avoid dumping a vast string here, just write the first
|
||||
// part of the story out each time there's a reallocation.
|
||||
var intro = story._split(separator: ":")[0]
|
||||
print("reallocation \(reallocations), with intro \(intro)")
|
||||
|
||||
if reallocations >= 30 {
|
||||
print("Reallocations exceeded 30")
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
story += "."
|
||||
}
|
||||
print("total reallocations = \(reallocations)")
|
||||
}
|
||||
|
||||
testReallocation()
|
||||
print("done!")
|
||||
Reference in New Issue
Block a user