| // RUN: %target-run-simple-swift | %FileCheck %s |
| // REQUIRES: executable_test |
| |
| // REQUIRES: objc_interop |
| |
| import Foundation |
| |
| var hello : NSString = "Hello, world!" |
| // CHECK: Hello, world! |
| print(hello) |
| |
| // CHECK: ello, |
| var helloStr: String = hello as String |
| print(String(helloStr._core[NSRange(location: 1, length: 5).toRange()!])) |
| |
| var upperHello = hello.uppercased |
| // CHECK: HELLO, WORLD! |
| print(upperHello) |
| |
| // Note: easy way to create an NSDictionary |
| var strings : NSString = "\"A\" = \"Foo\";\n\"B\" = \"Bar\";\n" |
| var dict = strings.propertyListFromStringsFileFormat()! |
| |
| // Subscripting an NSDictionary. |
| // CHECK: A -> Foo |
| print("A -> " + (dict["A"] as! String)) |
| // CHECK: B -> Bar |
| print("B -> " + (dict["B"] as! String)) |
| |
| // Creating and subscripting an NSMutableArray |
| var array = NSMutableArray(capacity: 2) |
| hello = "Hello" |
| array[0] = hello |
| array[1] = "world" as NSString |
| |
| // FIXME: NSString string interpolation doesn't work due to lack of |
| // overload resolution. |
| // CHECK: Hello, world! |
| print(array[0] as! NSString, terminator: "") |
| print(", ", terminator: ""); |
| print(array[1] as! NSString, terminator: "") |
| print("!") |
| |
| // Selectors |
| assert(NSString.instancesRespond(to: "init")) |
| assert(!NSString.instancesRespond(to: "wobble")) |
| |
| // Array of strings |
| var array2 : NSArray = [hello, hello] |
| |
| // Switch on strings |
| switch ("world" as NSString).uppercased { |
| case "WORLD": |
| print("Found it\n", terminator: "") |
| |
| default: |
| assert(false, "didn't match") |
| } |
| |
| // Test string comparisons. |
| func testComparisons() { |
| let ns1: NSString = "foo" |
| let ns2: NSString = "bar" |
| |
| let nms1: NSMutableString = "foo" |
| let nms2: NSMutableString = "bar" |
| |
| let s1: String = "foo" |
| let s2: String = "bar" |
| |
| // Test String [==,!=] String. |
| if s1 == s2 { print("s1 == s2") } |
| if s1 != s2 { print("s1 != s2") } |
| if s1 == s1 { print("s1 == s1") } |
| if s1 != s1 { print("s1 != s1") } |
| |
| // Test String [==,!=] NSString. |
| // This test does not compile, as comparing these 2 types is ambiguous. |
| // if s1 == ns2 { print("s1 == ns2") } |
| // if s1 != ns2 { print("s1 != ns2") } |
| // if s1 == ns1 { print("s1 == ns1") } |
| // if s1 != ns1 { print("s1 != ns1") } |
| |
| // Test NSString [==,!=] String. |
| // This test does not compile, as comparing these 2 types is ambiguous. |
| // if ns1 == s2 { print("ns1 == s2") } |
| // if ns1 != s2 { print("ns1 != s2") } |
| // if ns1 == s1 { print("ns1 == s1") } |
| // if ns1 != s1 { print("ns1 != s1") } |
| |
| // Test NString [==,!=] NString. |
| if ns1 == ns2 { print("ns1 == ns2") } |
| if ns1 != ns2 { print("ns1 != ns2") } |
| if ns1 == ns1 { print("ns1 == ns1") } |
| if ns1 != ns1 { print("ns1 != ns1") } |
| |
| // Test NSMutableString [==,!=] String. |
| // This test does not compile, as comparing these 2 types is ambiguous. |
| // if nms1 == s2 { print("nms1 == s2") } |
| // if nms1 != s2 { print("nms1 != s2") } |
| // if nms1 == s1 { print("nms1 == s1") } |
| // if nms1 != s1 { print("nms1 != s1") } |
| |
| // Test NSMutableString [==,!=] NSMutableString. |
| if nms1 == nms2 { print("nms1 == nms2") } |
| if nms1 != nms2 { print("nms1 != nms2") } |
| if nms1 == nms1 { print("nms1 == nms1") } |
| if nms1 != nms1 { print("nms1 != nms1") } |
| |
| // Test NString [==,!=] NSMutableString. |
| if ns1 == nms2 { print("ns1 == nms2") } |
| if ns1 != nms2 { print("ns1 != nms2") } |
| if ns1 == nms1 { print("ns1 == nms1") } |
| if ns1 != nms1 { print("ns1 != nms1") } |
| |
| // Test NSMutableString [==,!=] NSString. |
| if nms1 == ns2 { print("nms1 == ns2") } |
| if nms1 != ns2 { print("nms1 != ns2") } |
| if nms1 == ns1 { print("nms1 == ns1") } |
| if nms1 != ns1 { print("nms1 != ns1") } |
| } |
| |
| // CHECK: s1 != s2 |
| // CHECK: s1 == s1 |
| // CHECK: ns1 != ns2 |
| // CHECK: ns1 == ns1 |
| // CHECK: nms1 != nms2 |
| // CHECK: nms1 == nms1 |
| // CHECK: ns1 != nms2 |
| // CHECK: ns1 == nms1 |
| // CHECK: nms1 != ns2 |
| // CHECK: nms1 == ns1 |
| testComparisons() |
| |
| // Test overlain variadic methods. |
| // CHECK-LABEL: Variadic methods: |
| print("Variadic methods:") |
| // Check that it works with bridged Strings. |
| // CHECK-NEXT: x y |
| print(NSString(format: "%@ %@", "x", "y")) |
| // Check that it works with bridged Arrays and Dictionaries. |
| // CHECK-NEXT: ( |
| // CHECK-NEXT: x |
| // CHECK-NEXT: ) { |
| // CHECK-NEXT: y = z; |
| // CHECK-NEXT: } |
| print(NSString(format: "%@ %@", ["x"], ["y": "z"])) |
| // CHECK-NEXT: 1{{.*}}024,25 |
| print(NSString( |
| format: "%g", |
| locale: Locale(identifier: "fr_FR"), |
| 1024.25 |
| )) |
| // CHECK-NEXT: x y z |
| print(("x " as NSString).appendingFormat("%@ %@", "y", "z")) |
| // CHECK-NEXT: a b c |
| let s = NSMutableString(string: "a ") |
| s.appendFormat("%@ %@", "b", "c") |
| print(s) |
| |
| let m = NSMutableString.localizedStringWithFormat("<%@ %@>", "q", "r") |
| // CHECK-NEXT: <q r> |
| print(m) |
| m.append(" lever") |
| // CHECK-NEXT: <q r> lever |
| print(m) |