mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[test] renaming test/1_stdlib to just test/stdlib
This commit is contained in:
149
test/stdlib/StaticString.swift
Normal file
149
test/stdlib/StaticString.swift
Normal file
@@ -0,0 +1,149 @@
|
||||
// RUN: %target-run-simple-swift
|
||||
// REQUIRES: executable_test
|
||||
|
||||
import StdlibUnittest
|
||||
|
||||
|
||||
var StaticStringTestSuite = TestSuite("StaticString")
|
||||
|
||||
StaticStringTestSuite.test("PointerRepresentation/ASCII/Empty") {
|
||||
let str = StaticString()
|
||||
expectEqual(0, str.utf8CodeUnitCount)
|
||||
expectTrue(str.hasPointerRepresentation)
|
||||
expectTrue(str.isASCII)
|
||||
str.withUTF8Buffer {
|
||||
utf8 in
|
||||
expectEqual(0, utf8.count)
|
||||
}
|
||||
expectEqual("", str.description)
|
||||
|
||||
expectPrinted("", str)
|
||||
expectDebugPrinted("\"\"", str)
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("PointerRepresentation/ASCII") {
|
||||
let str: StaticString = "abc"
|
||||
expectEqual(0x61, str.utf8Start[0])
|
||||
expectEqual(0x62, str.utf8Start[1])
|
||||
expectEqual(0x63, str.utf8Start[2])
|
||||
expectEqual(3, str.utf8CodeUnitCount)
|
||||
expectTrue(str.hasPointerRepresentation)
|
||||
expectTrue(str.isASCII)
|
||||
str.withUTF8Buffer {
|
||||
(utf8) -> Void in
|
||||
expectEqual(3, utf8.count)
|
||||
expectEqual(0x61, utf8[0])
|
||||
expectEqual(0x62, utf8[1])
|
||||
expectEqual(0x63, utf8[2])
|
||||
}
|
||||
expectEqual("abc", str.description)
|
||||
|
||||
expectPrinted("abc", str)
|
||||
expectDebugPrinted("\"abc\"", str)
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("PointerRepresentation/NonASCII") {
|
||||
let str: StaticString = "абв"
|
||||
expectEqual(0xd0, str.utf8Start[0])
|
||||
expectEqual(0xb0, str.utf8Start[1])
|
||||
expectEqual(0xd0, str.utf8Start[2])
|
||||
expectEqual(0xb1, str.utf8Start[3])
|
||||
expectEqual(0xd0, str.utf8Start[4])
|
||||
expectEqual(0xb2, str.utf8Start[5])
|
||||
expectEqual(6, str.utf8CodeUnitCount)
|
||||
expectTrue(str.hasPointerRepresentation)
|
||||
expectFalse(str.isASCII)
|
||||
str.withUTF8Buffer {
|
||||
(utf8) -> Void in
|
||||
expectEqual(6, utf8.count)
|
||||
expectEqual(0xd0, utf8[0])
|
||||
expectEqual(0xb0, utf8[1])
|
||||
expectEqual(0xd0, utf8[2])
|
||||
expectEqual(0xb1, utf8[3])
|
||||
expectEqual(0xd0, utf8[4])
|
||||
expectEqual(0xb2, utf8[5])
|
||||
}
|
||||
expectEqual("абв", str.description)
|
||||
|
||||
expectPrinted("абв", str)
|
||||
expectDebugPrinted("\"абв\"", str)
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("PointerRepresentation/unicodeScalar")
|
||||
.skip(.custom(
|
||||
{ _isFastAssertConfiguration() },
|
||||
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
||||
.crashOutputMatches(_isDebugAssertConfiguration() ?
|
||||
"StaticString should have Unicode scalar representation" : "")
|
||||
.code {
|
||||
let str: StaticString = "abc"
|
||||
let strOpaque = _opaqueIdentity(str)
|
||||
expectCrashLater()
|
||||
strOpaque.unicodeScalar
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("UnicodeScalarRepresentation/ASCII") {
|
||||
// The type checker does not call the UnicodeScalar initializer even if
|
||||
// passed a literal that consists from a single Unicode scalar.
|
||||
|
||||
// U+005A LATIN CAPITAL LETTER Z
|
||||
let str = StaticString(_builtinUnicodeScalarLiteral: UInt32(0x5a)._value)
|
||||
expectEqual("Z", str.unicodeScalar)
|
||||
expectFalse(str.hasPointerRepresentation)
|
||||
expectTrue(str.isASCII)
|
||||
str.withUTF8Buffer {
|
||||
(utf8) -> Void in
|
||||
expectEqual(1, utf8.count)
|
||||
expectEqual(0x5a, utf8[0])
|
||||
}
|
||||
expectEqual("Z", str.description)
|
||||
|
||||
expectPrinted("Z", str)
|
||||
expectDebugPrinted("\"Z\"", str)
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("UnicodeScalarRepresentation/NonASCII") {
|
||||
// U+042B CYRILLIC CAPITAL LETTER YERU
|
||||
let str = StaticString(_builtinUnicodeScalarLiteral: UInt32(0x042b)._value)
|
||||
expectEqual("Ы", str.unicodeScalar)
|
||||
expectFalse(str.hasPointerRepresentation)
|
||||
expectFalse(str.isASCII)
|
||||
str.withUTF8Buffer {
|
||||
(utf8) -> Void in
|
||||
expectEqual(0xd0, utf8[0])
|
||||
expectEqual(0xab, utf8[1])
|
||||
}
|
||||
expectEqual("Ы", str.description)
|
||||
|
||||
expectPrinted("Ы", str)
|
||||
expectDebugPrinted("\"Ы\"", str)
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("UnicodeScalarRepresentation/utf8Start")
|
||||
.skip(.custom(
|
||||
{ _isFastAssertConfiguration() },
|
||||
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
||||
.crashOutputMatches(_isDebugAssertConfiguration() ?
|
||||
"StaticString should have pointer representation" : "")
|
||||
.code {
|
||||
let str = StaticString(_builtinUnicodeScalarLiteral: UInt32(0x5a)._value)
|
||||
let strOpaque = _opaqueIdentity(str)
|
||||
expectCrashLater()
|
||||
strOpaque.utf8Start
|
||||
}
|
||||
|
||||
StaticStringTestSuite.test("UnicodeScalarRepresentation/utf8CodeUnitCount")
|
||||
.skip(.custom(
|
||||
{ _isFastAssertConfiguration() },
|
||||
reason: "this trap is not guaranteed to happen in -Ounchecked"))
|
||||
.crashOutputMatches(_isDebugAssertConfiguration() ?
|
||||
"StaticString should have pointer representation" : "")
|
||||
.code {
|
||||
let str = StaticString(_builtinUnicodeScalarLiteral: UInt32(0x5a)._value)
|
||||
let strOpaque = _opaqueIdentity(str)
|
||||
expectCrashLater()
|
||||
strOpaque.utf8CodeUnitCount
|
||||
}
|
||||
|
||||
runAllTests()
|
||||
|
||||
Reference in New Issue
Block a user