From 57621b4bc347f2f7a909f5cbef325aa5a5997936 Mon Sep 17 00:00:00 2001 From: Shmuel Kallner Date: Mon, 8 Aug 2016 12:49:47 +0300 Subject: [PATCH] Migration 0725 (#12) * IBM-Swift/Kitura#644 Changes for OSX * IBM-Swift/Kitura#644 Migrated to use Data instead of NSData * IBM-Swift/Kitura#644 Linux changes * IBM-Swift/Kitura#644 NSData to Data migration and Linux changes * IBM-Swift/Kitura#644 NSData to Data migration * IBM-Swift/Kitura#644 Linux changes * IBM-Swift/Kitura#644 NSData to Data migration and Linux changes * IBM-Swift/Kitura#644 Updated swift version --- .swift-version | 2 +- Source/LclJSONSerialization.swift | 61 +++++------ Source/SwiftyJSON.swift | 132 +++++++++++------------ Tests/SwiftyJSON/BaseTests.swift | 16 +-- Tests/SwiftyJSON/PerformanceTests.swift | 14 ++- Tests/SwiftyJSON/PrintableTests.swift | 24 ++--- Tests/SwiftyJSON/RawTests.swift | 24 ++--- Tests/SwiftyJSON/SequenceTypeTests.swift | 43 ++++---- Tests/SwiftyJSON/StringTests.swift | 4 +- 9 files changed, 150 insertions(+), 170 deletions(-) diff --git a/.swift-version b/.swift-version index 2469c8d1..fbe576f4 100644 --- a/.swift-version +++ b/.swift-version @@ -1 +1 @@ -DEVELOPMENT-SNAPSHOT-2016-06-20-a +DEVELOPMENT-SNAPSHOT-2016-07-25-a diff --git a/Source/LclJSONSerialization.swift b/Source/LclJSONSerialization.swift index 93649a41..be443d29 100644 --- a/Source/LclJSONSerialization.swift +++ b/Source/LclJSONSerialization.swift @@ -24,9 +24,9 @@ public let LclErrorDomain = "Lcl.Error.Domain" public class LclJSONSerialization { private static let JSON_WRITE_ERROR = "JSON Write failure." - private static let FALSE = NSString(string: "false") - private static let TRUE = NSString(string: "true") - private static let NULL = NSString(string: "null") + private static let FALSE = "false" + private static let TRUE = "true" + private static let NULL = "null" public class func isValidJSONObject(_ obj: Any) -> Bool { @@ -103,13 +103,13 @@ public class LclJSONSerialization { return isValidJSONObjectInternal(obj) } - public class func dataWithJSONObject(_ obj: Any, options: NSJSONWritingOptions) throws -> NSData + public class func dataWithJSONObject(_ obj: Any, options: JSONSerialization.WritingOptions) throws -> Data { - let result = NSMutableData() + var result = Data() - try writeJson(obj, options: options) { (str: NSString?) in + try writeJson(obj, options: options) { (str: String?) in if let str = str { - result.append(str.cString(using: NSUTF8StringEncoding)!, length: str.lengthOfBytes(using: NSUTF8StringEncoding)) + result.append(str.data(using: String.Encoding.utf8) ?? Data()) } } @@ -117,28 +117,28 @@ public class LclJSONSerialization { } /* Helper function to enable writing to NSData as well as NSStream */ - private static func writeJson(_ obj: Any, options opt: NSJSONWritingOptions, writer: (NSString?) -> Void) throws { - let prettyPrint = opt.rawValue & NSJSONWritingOptions.prettyPrinted.rawValue != 0 - let padding: NSString? = prettyPrint ? NSString(string: "") : nil + private static func writeJson(_ obj: Any, options opt: JSONSerialization.WritingOptions, writer: (String?) -> Void) throws { + let prettyPrint = opt.rawValue & JSONSerialization.WritingOptions.prettyPrinted.rawValue != 0 + let padding: String? = prettyPrint ? "" : nil try writeJsonValue(obj, padding: padding, writer: writer) } /* Write out a JSON value (simple value, object, or array) */ - private static func writeJsonValue(_ obj: Any, padding: NSString?, writer: (NSString?) -> Void) throws { + private static func writeJsonValue(_ obj: Any, padding: String?, writer: (String?) -> Void) throws { if obj is String { writer("\"") - writer((obj as! String).bridge()) + writer((obj as! String)) writer("\"") } else if obj is Bool { writer(obj as! Bool ? TRUE : FALSE) } else if obj is Int || obj is Float || obj is Double || obj is UInt { - writer(String(obj).bridge()) + writer(String(obj)) } else if obj is NSNumber { - writer(JSON.stringFromNumber(obj as! NSNumber).bridge()) + writer(JSON.stringFromNumber(obj as! NSNumber)) } else if obj is NSNull { writer(NULL) @@ -159,14 +159,14 @@ public class LclJSONSerialization { } /* Write out a dictionary as a JSON object */ - private static func writeJsonObject(_ pairs: Array, padding: NSString?, writer: (NSString?) -> Void) throws { + private static func writeJsonObject(_ pairs: Array, padding: String?, writer: (String?) -> Void) throws { let (nestedPadding, startOfLine, endOfLine) = setupPadding(padding) - let nameValueSeparator = NSString(string: padding != nil ? ": " : ":") + let nameValueSeparator = padding != nil ? ": " : ":" writer("{") - var comma = NSString(string: "") - let realComma = NSString(string: ",") + var comma = "" + let realComma = "," for pair in pairs { let pairMirror = Mirror(reflecting: pair) if pairMirror.displayStyle == .tuple && pairMirror.children.count == 2 { @@ -178,7 +178,7 @@ public class LclJSONSerialization { writer(endOfLine) writer(nestedPadding) writer("\"") - writer(key.bridge()) + writer(key) writer("\"") writer(nameValueSeparator) try writeJsonValue(value, padding: nestedPadding, writer: writer) @@ -192,12 +192,12 @@ public class LclJSONSerialization { } /* Write out an array as a JSON Array */ - private static func writeJsonArray(_ obj: Array, padding: NSString?, writer: (NSString?) -> Void) throws { + private static func writeJsonArray(_ obj: Array, padding: String?, writer: (String?) -> Void) throws { let (nestedPadding, startOfLine, endOfLine) = setupPadding(padding) writer("[") - var comma = NSString(string: "") - let realComma = NSString(string: ",") + var comma = "" + let realComma = "," for value in obj { writer(comma) comma = realComma @@ -215,17 +215,14 @@ public class LclJSONSerialization { Note: if padding is nil, then all padding, newlines etc., are suppressed */ - private static func setupPadding(_ padding: NSString?) -> (NSString?, NSString?, NSString?) { - let nestedPadding: NSString? - let startOfLine: NSString? - let endOfLine: NSString? + private static func setupPadding(_ padding: String?) -> (String?, String?, String?) { + var nestedPadding: String? + var startOfLine: String? + var endOfLine: String? if let padding = padding { - let temp = NSMutableString(capacity: 20) - temp.append(padding.bridge()) - temp.append(" ") - nestedPadding = NSString(string: temp.bridge()) + nestedPadding = padding + " " startOfLine = padding - endOfLine = NSString(stringLiteral: "\n") + endOfLine = "\n" } else { nestedPadding = nil @@ -241,4 +238,4 @@ public class LclJSONSerialization { return NSError(domain: LclErrorDomain, code: 1, userInfo: userInfo) } } -#endif \ No newline at end of file +#endif diff --git a/Source/SwiftyJSON.swift b/Source/SwiftyJSON.swift index a91acae1..71aec987 100755 --- a/Source/SwiftyJSON.swift +++ b/Source/SwiftyJSON.swift @@ -35,7 +35,7 @@ public let ErrorWrongType: Int = 901 public let ErrorNotExist: Int = 500 public let ErrorInvalidJSON: Int = 490 -public enum SwiftyJSONError: ErrorProtocol { +public enum SwiftyJSONError: Error { case empty case errorInvalidJSON(String) } @@ -71,13 +71,13 @@ public struct JSON { #if os(Linux) /** Creates a JSON using the data. - - parameter data: The NSData used to convert to json.Top level object in data is an NSArray or NSDictionary + - parameter data: The Data used to convert to json.Top level object in data is an NSArray or NSDictionary - parameter opt: The JSON serialization reading options. `.AllowFragments` by default. - returns: The created JSON */ - public init(data:NSData, options opt: NSJSONReadingOptions = .allowFragments) { + public init(data: Data, options opt: JSONSerialization.ReadingOptions = .allowFragments) { do { - let object: Any = try NSJSONSerialization.jsonObject(with: data, options: opt) + let object: Any = try JSONSerialization.jsonObject(with: data, options: opt) self.init(object) } catch { @@ -86,7 +86,7 @@ public struct JSON { } } #else - public init(data:NSData, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil) { + public init(data: Data, options opt: JSONSerialization.ReadingOptions = .allowFragments, error: NSErrorPointer = nil) { do { let object: AnyObject = try JSONSerialization.jsonObject(with: data as Data, options: opt) self.init(object) @@ -106,11 +106,7 @@ public struct JSON { - returns: The created JSON */ public static func parse(string:String) -> JSON { - #if os(Linux) - return string.data(using: NSUTF8StringEncoding).flatMap({JSON(data: $0)}) ?? JSON(NSNull()) - #else - return string.data(using: String.Encoding.utf8).flatMap({JSON(data: $0)}) ?? JSON(NSNull()) - #endif + return string.data(using: String.Encoding.utf8).flatMap({JSON(data: $0)}) ?? JSON(NSNull()) } /** @@ -252,10 +248,10 @@ public struct JSON { case let dictionary as NSDictionary: type = .dictionary var dict = [String: Any]() - dictionary.enumerateKeysAndObjectsUsingBlock() {(key: AnyObject, val: AnyObject, stop: UnsafeMutablePointer) in - let keyStr = key as! NSString - dict[keyStr.bridge()] = val - } + dictionary.enumerateKeysAndObjects(using: {(key: AnyObject, val: AnyObject, stop: UnsafeMutablePointer) in + let keyStr = key as! NSString + dict[keyStr.bridge()] = val + }) value = dict default: let mirror = Mirror(reflecting: newValue) @@ -517,9 +513,13 @@ public func ==(lhs: JSONIndex, rhs: JSONIndex) -> Bool { public func <(lhs: JSONIndex, rhs: JSONIndex) -> Bool { switch (lhs.type, rhs.type) { case (.array, .array): - return lhs.arrayIndex < rhs.arrayIndex + guard let lhsArrayIndex = lhs.arrayIndex, + let rhsArrayIndex = rhs.arrayIndex else { return false } + return lhsArrayIndex < rhsArrayIndex case (.dictionary, .dictionary): - return lhs.dictionaryIndex < rhs.dictionaryIndex + guard let lhsDictionaryIndex = lhs.dictionaryIndex, + let rhsDictionaryIndex = rhs.dictionaryIndex else { return false } + return lhsDictionaryIndex < rhsDictionaryIndex default: return false } @@ -528,9 +528,13 @@ public func <(lhs: JSONIndex, rhs: JSONIndex) -> Bool { public func <=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { switch (lhs.type, rhs.type) { case (.array, .array): - return lhs.arrayIndex <= rhs.arrayIndex + guard let lhsArrayIndex = lhs.arrayIndex, + let rhsArrayIndex = rhs.arrayIndex else { return false } + return lhsArrayIndex < rhsArrayIndex case (.dictionary, .dictionary): - return lhs.dictionaryIndex <= rhs.dictionaryIndex + guard let lhsDictionaryIndex = lhs.dictionaryIndex, + let rhsDictionaryIndex = rhs.dictionaryIndex else { return false } + return lhsDictionaryIndex < rhsDictionaryIndex default: return false } @@ -539,9 +543,13 @@ public func <=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { public func >=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { switch (lhs.type, rhs.type) { case (.array, .array): - return lhs.arrayIndex >= rhs.arrayIndex + guard let lhsArrayIndex = lhs.arrayIndex, + let rhsArrayIndex = rhs.arrayIndex else { return false } + return lhsArrayIndex < rhsArrayIndex case (.dictionary, .dictionary): - return lhs.dictionaryIndex >= rhs.dictionaryIndex + guard let lhsDictionaryIndex = lhs.dictionaryIndex, + let rhsDictionaryIndex = rhs.dictionaryIndex else { return false } + return lhsDictionaryIndex < rhsDictionaryIndex default: return false } @@ -550,9 +558,13 @@ public func >=(lhs: JSONIndex, rhs: JSONIndex) -> Bool { public func >(lhs: JSONIndex, rhs: JSONIndex) -> Bool { switch (lhs.type, rhs.type) { case (.array, .array): - return lhs.arrayIndex > rhs.arrayIndex + guard let lhsArrayIndex = lhs.arrayIndex, + let rhsArrayIndex = rhs.arrayIndex else { return false } + return lhsArrayIndex < rhsArrayIndex case (.dictionary, .dictionary): - return lhs.dictionaryIndex > rhs.dictionaryIndex + guard let lhsDictionaryIndex = lhs.dictionaryIndex, + let rhsDictionaryIndex = rhs.dictionaryIndex else { return false } + return lhsDictionaryIndex < rhsDictionaryIndex default: return false } @@ -831,7 +843,7 @@ extension JSON: Swift.RawRepresentable { return self.object } #if os(Linux) - public func rawData(options opt: NSJSONWritingOptions = NSJSONWritingOptions(rawValue: 0)) throws -> NSData { + public func rawData(options opt: JSONSerialization.WritingOptions = JSONSerialization.WritingOptions(rawValue: 0)) throws -> Data { guard LclJSONSerialization.isValidJSONObject(self.object) else { throw SwiftyJSONError.errorInvalidJSON("JSON is invalid") } @@ -839,7 +851,7 @@ extension JSON: Swift.RawRepresentable { return try LclJSONSerialization.dataWithJSONObject(self.object, options: opt) } #else - public func rawData(options opt: JSONSerialization.WritingOptions = JSONSerialization.WritingOptions(rawValue: 0)) throws -> NSData { + public func rawData(options opt: JSONSerialization.WritingOptions = JSONSerialization.WritingOptions(rawValue: 0)) throws -> Data { guard JSONSerialization.isValidJSONObject(self.object) else { throw SwiftyJSONError.errorInvalidJSON("JSON is invalid") } @@ -849,12 +861,12 @@ extension JSON: Swift.RawRepresentable { #endif #if os(Linux) - public func rawString(encoding: UInt = NSUTF8StringEncoding, options opt: NSJSONWritingOptions = .prettyPrinted) -> String? { + public func rawString(encoding: String.Encoding = String.Encoding.utf8, options opt: JSONSerialization.WritingOptions = .prettyPrinted) -> String? { switch self.type { case .array, .dictionary: do { let data = try self.rawData(options: opt) - return NSString(data: data, encoding: encoding)?.bridge() + return String(data: data, encoding: encoding) } catch _ { return nil } @@ -871,12 +883,12 @@ extension JSON: Swift.RawRepresentable { } } #else - public func rawString(encoding: UInt = String.Encoding.utf8.rawValue, options opt: JSONSerialization.WritingOptions = .prettyPrinted) -> String? { + public func rawString(encoding: String.Encoding = String.Encoding.utf8, options opt: JSONSerialization.WritingOptions = .prettyPrinted) -> String? { switch self.type { case .array, .dictionary: do { let data = try self.rawData(options: opt) - return NSString(data: data as Data, encoding: encoding) as? String + return String(data: data, encoding: encoding) } catch _ { return nil } @@ -999,7 +1011,7 @@ extension JSON { // MARK: - Bool -extension JSON: Swift.BooleanType { +extension JSON { //Optional bool public var bool: Bool? { @@ -1097,7 +1109,7 @@ extension JSON { case .number: return JSON.stringFromNumber(self.object as! NSNumber) case .bool: - return String(self.object as! Bool) ?? "" + return String(self.object as! Bool) default: return "" } @@ -1152,8 +1164,8 @@ extension JSON { } #else let decimal = NSDecimalNumber(string: self.object as? String) - if decimal == NSDecimalNumber.notANumber() { // indicates parse error - return NSDecimalNumber.zero() + if decimal == NSDecimalNumber.notANumber { // indicates parse error + return NSDecimalNumber.zero } return decimal #endif @@ -1195,7 +1207,7 @@ extension JSON { } } public func exists() -> Bool{ - if let errorValue = error where errorValue.code == ErrorNotExist{ + if let errorValue = error, errorValue.code == ErrorNotExist{ return false } return true @@ -1210,15 +1222,16 @@ extension JSON { get { switch self.type { case .string: -#if os(Linux) - guard let encodedString_ = self.rawString.bridge().stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) else { - return nil - } -#else - guard let encodedString_ = self.rawString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) else { - return nil - } -#endif + #if os(Linux) + guard let encodedString_ = self.rawString.bridge().stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.urlQueryAllowed) else { + return nil + } + #else + guard let encodedString_ = self.rawString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) else { + return nil + } + #endif + return NSURL(string: encodedString_) default: @@ -1628,8 +1641,8 @@ extension NSNumber { #if os(Linux) let type = CFNumberGetType(unsafeBitCast(self, to: CFNumber.self)) if type == kCFNumberSInt8Type && - (self.compare(trueNumber) == NSComparisonResult.orderedSame || - self.compare(falseNumber) == NSComparisonResult.orderedSame){ + (self.compare(trueNumber) == ComparisonResult.orderedSame || + self.compare(falseNumber) == ComparisonResult.orderedSame){ return true } else { return false @@ -1654,11 +1667,7 @@ func ==(lhs: NSNumber, rhs: NSNumber) -> Bool { case (true, false): return false default: - #if os(Linux) - return lhs.compare(rhs) == NSComparisonResult.orderedSame - #else - return lhs.compare(rhs) == ComparisonResult.orderedSame - #endif + return lhs.compare(rhs) == ComparisonResult.orderedSame } } @@ -1674,11 +1683,7 @@ func <(lhs: NSNumber, rhs: NSNumber) -> Bool { case (true, false): return false default: - #if os(Linux) - return lhs.compare(rhs) == NSComparisonResult.orderedAscending - #else - return lhs.compare(rhs) == ComparisonResult.orderedAscending - #endif + return lhs.compare(rhs) == ComparisonResult.orderedAscending } } @@ -1690,11 +1695,7 @@ func >(lhs: NSNumber, rhs: NSNumber) -> Bool { case (true, false): return false default: - #if os(Linux) - return lhs.compare(rhs) == NSComparisonResult.orderedDescending - #else - return lhs.compare(rhs) == ComparisonResult.orderedDescending - #endif + return lhs.compare(rhs) == ComparisonResult.orderedDescending } } @@ -1706,11 +1707,7 @@ func <=(lhs: NSNumber, rhs: NSNumber) -> Bool { case (true, false): return false default: - #if os(Linux) - return lhs.compare(rhs) != NSComparisonResult.orderedDescending - #else - return lhs.compare(rhs) != ComparisonResult.orderedDescending - #endif + return lhs.compare(rhs) != ComparisonResult.orderedDescending } } @@ -1722,10 +1719,7 @@ func >=(lhs: NSNumber, rhs: NSNumber) -> Bool { case (true, false): return false default: - #if os(Linux) - return lhs.compare(rhs) != NSComparisonResult.orderedAscending - #else - return lhs.compare(rhs) != ComparisonResult.orderedAscending - #endif + return lhs.compare(rhs) != ComparisonResult.orderedAscending + } } diff --git a/Tests/SwiftyJSON/BaseTests.swift b/Tests/SwiftyJSON/BaseTests.swift index 7d827bdc..964bb1ca 100644 --- a/Tests/SwiftyJSON/BaseTests.swift +++ b/Tests/SwiftyJSON/BaseTests.swift @@ -46,12 +46,18 @@ class BaseTests: XCTestCase { } // END OF GENERATED CODE - var testData: NSData! + var testData: Data! override func setUp() { super.setUp() - self.testData = NSData(contentsOfFile: "Tests/SwiftyJSON/Tests.json") + do { + self.testData = try Data(contentsOf: URL(fileURLWithPath: "Tests/SwiftyJSON/Tests.json")) + } + catch { + XCTFail("FAiled to read in the test data") + exit(1) + } } override func tearDown() { @@ -68,11 +74,7 @@ class BaseTests: XCTestCase { dictionary.setObject(NSNull(), forKey: "null" as NSString) _ = JSON(dictionary) do { - #if os(Linux) - let object: JSON.AnyType = try NSJSONSerialization.jsonObject(with: self.testData, options: []) - #else - let object: JSON.AnyType = try JSONSerialization.jsonObject(with: self.testData as Data, options: []) - #endif + let object: JSON.AnyType = try JSONSerialization.jsonObject(with: self.testData, options: []) let json2 = JSON(object) XCTAssertEqual(json0, json2) } catch _ { diff --git a/Tests/SwiftyJSON/PerformanceTests.swift b/Tests/SwiftyJSON/PerformanceTests.swift index a274d378..f1fface8 100644 --- a/Tests/SwiftyJSON/PerformanceTests.swift +++ b/Tests/SwiftyJSON/PerformanceTests.swift @@ -47,12 +47,18 @@ class PerformanceTests: XCTestCase { } // END OF GENERATED CODE - var testData: NSData! + var testData: Data! override func setUp() { super.setUp() - self.testData = NSData(contentsOfFile: "Tests/SwiftyJSON/Tests.json") + do { + self.testData = try Data(contentsOf: URL(fileURLWithPath: "Tests/SwiftyJSON/Tests.json")) + } + catch { + XCTFail("Failed to read in the test data") + exit(1) + } } override func tearDown() { @@ -85,7 +91,7 @@ class PerformanceTests: XCTestCase { for _ in 1...100 { autoreleasepool{ let array = json.array - XCTAssertTrue(array?.count > 0) + XCTAssertTrue( (array?.count ?? 0) > 0) } } } @@ -97,7 +103,7 @@ class PerformanceTests: XCTestCase { for _ in 1...100 { autoreleasepool{ let dictionary = json.dictionary - XCTAssertTrue(dictionary?.count > 0) + XCTAssertTrue( (dictionary?.count ?? 0) > 0) } } } diff --git a/Tests/SwiftyJSON/PrintableTests.swift b/Tests/SwiftyJSON/PrintableTests.swift index 2002176c..593015f5 100644 --- a/Tests/SwiftyJSON/PrintableTests.swift +++ b/Tests/SwiftyJSON/PrintableTests.swift @@ -81,29 +81,17 @@ class PrintableTests: XCTestCase { var description = json.description.replacingOccurrences(of: "\n", with: "") description = description.replacingOccurrences(of: " ", with: "") XCTAssertEqual(description, "[1,2,\"4\",5,\"6\"]") - #if os(Linux) - XCTAssertTrue(json.description.lengthOfBytes(using: NSUTF8StringEncoding) > 0) - XCTAssertTrue(json.debugDescription.lengthOfBytes(using: NSUTF8StringEncoding) > 0) - #else - XCTAssertTrue(json.description.lengthOfBytes(using: String.Encoding.utf8) > 0) - XCTAssertTrue(json.debugDescription.lengthOfBytes(using: String.Encoding.utf8) > 0) - #endif + XCTAssertTrue(json.description.lengthOfBytes(using: String.Encoding.utf8) > 0) + XCTAssertTrue(json.debugDescription.lengthOfBytes(using: String.Encoding.utf8) > 0) } func testDictionary() { let json:JSON = ["1":2,"2":"two", "3":3] var debugDescription = json.debugDescription.replacingOccurrences(of: "\n", with: "") debugDescription = debugDescription.replacingOccurrences(of: " ", with: "") - #if os(Linux) - XCTAssertTrue(json.description.lengthOfBytes(using: NSUTF8StringEncoding) > 0) - XCTAssertTrue(debugDescription.range(of: "\"1\":2", options: NSStringCompareOptions.caseInsensitiveSearch) != nil) - XCTAssertTrue(debugDescription.range(of: "\"2\":\"two\"", options: NSStringCompareOptions.caseInsensitiveSearch) != nil) - XCTAssertTrue(debugDescription.range(of:"\"3\":3", options: NSStringCompareOptions.caseInsensitiveSearch) != nil) - #else - XCTAssertTrue(json.description.lengthOfBytes(using: String.Encoding.utf8) > 0) - XCTAssertTrue(debugDescription.range(of: "\"1\":2", options: .caseInsensitive) != nil) - XCTAssertTrue(debugDescription.range(of: "\"2\":\"two\"", options: .caseInsensitive) != nil) - XCTAssertTrue(debugDescription.range(of:"\"3\":3", options: .caseInsensitive) != nil) - #endif + XCTAssertTrue(json.description.lengthOfBytes(using: String.Encoding.utf8) > 0) + XCTAssertTrue(debugDescription.range(of: "\"1\":2", options: .caseInsensitive) != nil) + XCTAssertTrue(debugDescription.range(of: "\"2\":\"two\"", options: .caseInsensitive) != nil) + XCTAssertTrue(debugDescription.range(of:"\"3\":3", options: .caseInsensitive) != nil) } } diff --git a/Tests/SwiftyJSON/RawTests.swift b/Tests/SwiftyJSON/RawTests.swift index b20762f2..983e88f3 100644 --- a/Tests/SwiftyJSON/RawTests.swift +++ b/Tests/SwiftyJSON/RawTests.swift @@ -44,13 +44,9 @@ class RawTests: XCTestCase { func testRawData() { let json : JSON = ["somekey" : "some string value"] - #if os(Linux) - let expectedRawData = "{\"somekey\":\"some string value\"}".data(using: NSUTF8StringEncoding) - #else - let expectedRawData = "{\"somekey\":\"some string value\"}".data(using: String.Encoding.utf8) - #endif + let expectedRawData = "{\"somekey\":\"some string value\"}".data(using: String.Encoding.utf8) do { - let data: NSData = try json.rawData() + let data = try json.rawData() XCTAssertEqual(expectedRawData, data) } catch _ { XCTFail() @@ -77,7 +73,7 @@ class RawTests: XCTestCase { func testArray() { let json : JSON = [1, "2", 3.12, NSNull(), true, ["name": "Jack"]] - let data: NSData? + let data: Data? do { data = try json.rawData() } catch _ { @@ -85,16 +81,12 @@ class RawTests: XCTestCase { } let string = json.rawString() XCTAssertTrue (data != nil) - #if os(Linux) - XCTAssertTrue (string!.lengthOfBytes(using: NSUTF8StringEncoding) > 0) - #else - XCTAssertTrue (string!.lengthOfBytes(using: String.Encoding.utf8) > 0) - #endif + XCTAssertTrue (string!.lengthOfBytes(using: String.Encoding.utf8) > 0) } func testDictionary() { let json : JSON = ["number":111111.23456789, "name":"Jack", "list":[1,2,3,4], "bool":false, "null":NSNull()] - let data: NSData? + let data: Data? do { data = try json.rawData() } catch _ { @@ -102,11 +94,7 @@ class RawTests: XCTestCase { } let string = json.rawString() XCTAssertTrue (data != nil) - #if os(Linux) - XCTAssertTrue (string!.lengthOfBytes(using: NSUTF8StringEncoding) > 0) - #else - XCTAssertTrue (string!.lengthOfBytes(using: String.Encoding.utf8) > 0) - #endif + XCTAssertTrue (string!.lengthOfBytes(using: String.Encoding.utf8) > 0) } func testString() { diff --git a/Tests/SwiftyJSON/SequenceTypeTests.swift b/Tests/SwiftyJSON/SequenceTypeTests.swift index 3103591b..80874423 100644 --- a/Tests/SwiftyJSON/SequenceTypeTests.swift +++ b/Tests/SwiftyJSON/SequenceTypeTests.swift @@ -46,27 +46,32 @@ class SequenceTypeTests: XCTestCase { } // END OF GENERATED CODE func testJSONFile() { - let testData = NSData(contentsOfFile: "Tests/SwiftyJSON/Tests.json") - let json = JSON(data:testData!) - var ind = 0 - for (_, sub) in json { - switch (ind) { - case 0: - let case0 = sub["id_str"].rawString()! - XCTAssertEqual(case0, "240558470661799936") - ind += 1 - case 1: - let case1 = sub["id_str"].rawString()! - XCTAssertEqual(case1, "240556426106372096") - ind += 1 - case 2: - let case2 = sub["id_str"].rawString()! - XCTAssertEqual(case2, "240539141056638977") - default: - XCTFail("testJSONFile failed, index not found") - break + do { + let testData = try Data(contentsOf: URL(fileURLWithPath: "Tests/SwiftyJSON/Tests.json")) + let json = JSON(data:testData) + var ind = 0 + for (_, sub) in json { + switch (ind) { + case 0: + let case0 = sub["id_str"].rawString()! + XCTAssertEqual(case0, "240558470661799936") + ind += 1 + case 1: + let case1 = sub["id_str"].rawString()! + XCTAssertEqual(case1, "240556426106372096") + ind += 1 + case 2: + let case2 = sub["id_str"].rawString()! + XCTAssertEqual(case2, "240539141056638977") + default: + XCTFail("testJSONFile failed, index not found") + break + } } } + catch { + XCTFail("Failed to read in the test data") + } } func testArrayAllNumber() { diff --git a/Tests/SwiftyJSON/StringTests.swift b/Tests/SwiftyJSON/StringTests.swift index d234b81d..892b13f5 100644 --- a/Tests/SwiftyJSON/StringTests.swift +++ b/Tests/SwiftyJSON/StringTests.swift @@ -58,9 +58,9 @@ class StringTests: XCTestCase { let urlString = "http://examble.com/unencoded" + emDash + "string" #if os(Linux) - let encodedURLString = urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLQueryAllowedCharacterSet()) + let encodedURLString = urlString.bridge().stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.urlQueryAllowed) #else - let encodedURLString = urlString.addingPercentEncoding(withAllowedCharacters: NSCharacterSet.urlQueryAllowed()) + let encodedURLString = urlString.addingPercentEncoding(withAllowedCharacters: CharacterSet.urlQueryAllowed) #endif let json = JSON(urlString as JSON.AnyType) XCTAssertEqual(json.URL!, NSURL(string: encodedURLString!)!, "Wrong unpacked ")