|
1 | 1 |
|
| 2 | +// --- stubs --- |
| 3 | + |
| 4 | +func print(_ items: Any...) {} |
| 5 | + |
| 6 | +typealias unichar = UInt16 |
| 7 | + |
| 8 | +class NSString |
| 9 | +{ |
| 10 | + init(string: String) { length = string.count } |
| 11 | + |
| 12 | + func character(at: Int) -> unichar { return 0 } |
| 13 | + func substring(from: Int) -> String { return "" } |
| 14 | + func substring(to: Int) -> String { return "" } |
| 15 | + |
| 16 | + var length: Int |
| 17 | +} |
| 18 | + |
| 19 | +class NSMutableString |
| 20 | +{ |
| 21 | + init(string: String) { length = string.count } |
| 22 | + |
| 23 | + func character(at: Int) -> unichar { return 0 } |
| 24 | + func substring(from: Int) -> String { return "" } |
| 25 | + func substring(to: Int) -> String { return "" } |
| 26 | + func insert(_: String, at: Int) {} |
| 27 | + |
| 28 | + var length: Int |
| 29 | +} |
| 30 | + |
| 31 | +class NSRange |
| 32 | +{ |
| 33 | + init(location: Int, length: Int) { self.description = "" } |
| 34 | + |
| 35 | + var description: String |
| 36 | +} |
| 37 | + |
| 38 | +func NSMakeRange(_ loc: Int, _ len: Int) -> NSRange { return NSRange(location: loc, length: len) } |
| 39 | + |
| 40 | +// --- tests --- |
| 41 | + |
2 | 42 | func test(s: String) {
|
3 |
| - /*let ns = NSString(string: s) |
4 |
| - let nms = NSString(string: s) |
| 43 | + let ns = NSString(string: s) |
| 44 | + let nms = NSMutableString(string: s) |
5 | 45 |
|
6 | 46 | print("'\(s)'")
|
7 | 47 | print("count \(s.count) length \(ns.length)")
|
@@ -58,27 +98,27 @@ func test(s: String) {
|
58 | 98 |
|
59 | 99 | let nstr1 = ns.character(at: ns.length - 1) // GOOD
|
60 | 100 | let nmstr1 = nms.character(at: nms.length - 1) // GOOD
|
61 |
| - let nstr2 = ns.character(at: s.count - 1) // BAD: String length used in NString |
| 101 | + let nstr2 = ns.character(at: s.count - 1) // BAD: String length used in NSString |
62 | 102 | let nmstr2 = nms.character(at: s.count - 1) // BAD: String length used in NString
|
63 | 103 | print("character '\(nstr1)' '\(nmstr1)' / '\(nstr2)' '\(nmstr2)'")
|
64 | 104 |
|
65 | 105 | let nstr3 = ns.substring(from: ns.length - 1) // GOOD
|
66 | 106 | let nmstr3 = nms.substring(from: nms.length - 1) // GOOD
|
67 |
| - let nstr4 = ns.substring(from: s.count - 1) // BAD: String length used in NString |
| 107 | + let nstr4 = ns.substring(from: s.count - 1) // BAD: String length used in NSString |
68 | 108 | let nmstr4 = nms.substring(from: s.count - 1) // BAD: String length used in NString
|
69 | 109 | print("substring from '\(nstr3)' '\(nmstr3)' / '\(nstr4)' '\(nmstr4)'")
|
70 | 110 |
|
71 | 111 | let nstr5 = ns.substring(to: ns.length - 1) // GOOD
|
72 | 112 | let nmstr5 = nms.substring(to: nms.length - 1) // GOOD
|
73 |
| - let nstr6 = ns.substring(to: s.count - 1) // BAD: String length used in NString |
| 113 | + let nstr6 = ns.substring(to: s.count - 1) // BAD: String length used in NSString |
74 | 114 | let nmstr6 = nms.substring(to: s.count - 1) // BAD: String length used in NString
|
75 | 115 | print("substring to '\(nstr5)' '\(nmstr5)' / '\(nstr6)' '\(nmstr6)'")
|
76 | 116 |
|
77 | 117 | let nmstr7 = NSMutableString(string: s)
|
78 | 118 | nmstr7.insert("*", at: nms.length - 1) // GOOD
|
79 | 119 | let nmstr8 = NSMutableString(string: s)
|
80 |
| - nmstr8.insert("*", at: s.count - 1) // BAD: String length used in NString |
81 |
| - print("insert '\(nmstr7)' / '\(nmstr8)'")*/ |
| 120 | + nmstr8.insert("*", at: s.count - 1) // BAD: String length used in NSString |
| 121 | + print("insert '\(nmstr7)' / '\(nmstr8)'") |
82 | 122 | }
|
83 | 123 |
|
84 | 124 | // `begin :thumbsup: end`, with thumbs up emoji and skin tone modifier
|
|
0 commit comments