// RUN: %target-run-simple-swift | FileCheck %s import Foundation func asNSString(s: String) -> NSString { return s } var hello : NSString = "Hello, world!" // CHECK: Hello, world! println(hello) // CHECK: ello, var helloStr: String = hello println(String(helloStr.core[NSRange(location: 1, length: 5)])) var upperHello = hello.uppercaseString // CHECK: HELLO, WORLD! println(upperHello) // Note: easy way to create an NSDictionary var strings : NSString = "\"A\" = \"Foo\";\n\"B\" = \"Bar\";\n" var dict = strings.propertyListFromStringsFileFormat() // Subscripting an NSDictionary. FIXME: The inner NSString casts are annoying. // CHECK: A -> Foo println("A -> " + (dict[asNSString("A")] as NSString)!) // CHECK: B -> Bar println("B -> " + (dict[asNSString("B")] as NSString)!) // Creating and subscripting an NSMutableArray var array = NSMutableArray(capacity: 2) hello = "Hello" array[0] = hello array[1] = asNSString("world") // FIXME: NSString string interpolation doesn't work due to lack of // overload resolution. // CHECK: Hello, world! print((array[0] as NSString)!) print(", "); print((array[1] as NSString)!) println("!") // Selectors assert(NSString.instancesRespondToSelector("init")) assert(!NSString.instancesRespondToSelector("wobble")) // Array of strings var array2 : NSArray = [hello, hello] // Switch on strings switch asNSString("world").uppercaseString! { case "WORLD": print("Found it\n") 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 { println("s1 == s2") } if s1 != s2 { println("s1 != s2") } if s1 == s1 { println("s1 == s1") } if s1 != s1 { println("s1 != s1") } // Test String [==,!=] NSString. if s1 == ns2 { println("s1 == ns2") } if s1 != ns2 { println("s1 != ns2") } if s1 == ns1 { println("s1 == ns1") } if s1 != ns1 { println("s1 != ns1") } // Test NSString [==,!=] String. if ns1 == s2 { println("ns1 == s2") } if ns1 != s2 { println("ns1 != s2") } if ns1 == s1 { println("ns1 == s1") } if ns1 != s1 { println("ns1 != s1") } // Test NString [==,!=] NString. if ns1 == ns2 { println("ns1 == ns2") } if ns1 != ns2 { println("ns1 != ns2") } if ns1 == ns1 { println("ns1 == ns1") } if ns1 != ns1 { println("ns1 != ns1") } // Test NSMutableString [==,!=] String. if nms1 == s2 { println("nms1 == s2") } if nms1 != s2 { println("nms1 != s2") } if nms1 == s1 { println("nms1 == s1") } if nms1 != s1 { println("nms1 != s1") } // Test NSMutableString [==,!=] NSMutableString. if nms1 == nms2 { println("nms1 == nms2") } if nms1 != nms2 { println("nms1 != nms2") } if nms1 == nms1 { println("nms1 == nms1") } if nms1 != nms1 { println("nms1 != nms1") } // Test NString [==,!=] NSMutableString. if ns1 == nms2 { println("ns1 == nms2") } if ns1 != nms2 { println("ns1 != nms2") } if ns1 == nms1 { println("ns1 == nms1") } if ns1 != nms1 { println("ns1 != nms1") } // Test NSMutableString [==,!=] NSString. if nms1 == ns2 { println("nms1 == ns2") } if nms1 != ns2 { println("nms1 != ns2") } if nms1 == ns1 { println("nms1 == ns1") } if nms1 != ns1 { println("nms1 != ns1") } } // CHECK: s1 != s2 // CHECK: s1 == s1 // CHECK: s1 != ns2 // CHECK: s1 == ns1 // CHECK: ns1 != s2 // CHECK: ns1 == s1 // CHECK: ns1 != ns2 // CHECK: ns1 == ns1 // CHECK: nms1 != s2 // CHECK: nms1 == s1 // 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: println("Variadic methods:") // CHECK-NEXT: x y println(NSString(format: "%@ %@", "x", "y")) // CHECK-NEXT: 1{{.*}}024,25 println(NSString( format: "%g", locale: NSLocale(localeIdentifier: "fr_FR"), 1024.25 )) // CHECK-NEXT: x y z println(("x " as NSString).stringByAppendingFormat("%@ %@", "y", "z")) // CHECK-NEXT: a b c let s = NSMutableString(string: "a ") s.appendFormat("%@ %@", "b", "c") println(s)