@@ -28,6 +28,11 @@ func debugVal<T>(_ x: inout T) -> String {
28
28
}
29
29
}
30
30
31
+ // Check if @x uses the small-string or Cocoa representations.
32
+ func hasSmallStringOrCocoaVariant( _ x: String ) -> Bool {
33
+ return x. _guts. _isCocoa || x. _guts. _isSmall
34
+ }
35
+
31
36
StringForPrintObjectTests . test ( " Basic " ) {
32
37
var a = " Hello World " as NSString
33
38
let a_printed = printObj ( a)
@@ -59,6 +64,19 @@ StringForPrintObjectTests.test("NSStringFromUnsafeBuffer") {
59
64
buf. deallocate ( )
60
65
}
61
66
67
+ StringForPrintObjectTests . test ( " NSStringUTF8 " ) {
68
+ let nsUTF16 = NSString ( utf8String: " πββ
ββοΈβοΈβοΈ " ) !
69
+ expectTrue ( CFStringGetCharactersPtr ( unsafeBitCast ( nsUTF16, to: CFString . self) ) != nil )
70
+ var newNSUTF16 = nsUTF16 as String
71
+ expectTrue ( hasSmallStringOrCocoaVariant ( newNSUTF16) )
72
+ let printed = printObj ( newNSUTF16)
73
+ let debug = debugVal ( & newNSUTF16)
74
+ expectEqual ( " πββ
ββοΈβοΈβοΈ " , String ( reflecting: nsUTF16) )
75
+ expectEqual ( " \" πββ
ββοΈβοΈβοΈ \" " , String ( reflecting: newNSUTF16) )
76
+ expectEqual ( " \" πββ
ββοΈβοΈβοΈ \" \n " , printed)
77
+ expectEqual ( printed, debug)
78
+ }
79
+
62
80
StringForPrintObjectTests . test ( " ArrayOfStrings " ) {
63
81
var a = [ " Hello World " as NSString ]
64
82
let a_printed = printObj ( a)
0 commit comments