|
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