56 lines
2.1 KiB
Swift
56 lines
2.1 KiB
Swift
import XCTest
|
|
import GRDB
|
|
|
|
class FoundationNSStringTests: GRDBTestCase {
|
|
|
|
func testNSStringDatabaseRoundTrip() throws {
|
|
let dbQueue = try makeDatabaseQueue()
|
|
func roundTrip(_ value: NSString) throws -> Bool {
|
|
guard let back = try dbQueue.inDatabase({ try NSString.fetchOne($0, sql: "SELECT ?", arguments: [value]) }) else {
|
|
XCTFail()
|
|
return false
|
|
}
|
|
return back == value
|
|
}
|
|
|
|
XCTAssertTrue(try roundTrip(NSString(string: "")))
|
|
XCTAssertTrue(try roundTrip(NSString(string: "foo")))
|
|
XCTAssertTrue(try roundTrip(NSString(string: "'fooéı👨👨🏿🇫🇷🇨🇮'")))
|
|
}
|
|
|
|
func testNSStringDatabaseValueRoundTrip() {
|
|
|
|
func roundTrip(_ value: NSString) -> Bool
|
|
{
|
|
let dbValue = value.databaseValue
|
|
guard let back = NSString.fromDatabaseValue(dbValue) else
|
|
{
|
|
XCTFail("Failed to convert from DatabaseValue to NSString")
|
|
return false
|
|
}
|
|
return back.isEqual(value)
|
|
}
|
|
|
|
XCTAssertTrue(roundTrip(NSString(string: "")))
|
|
XCTAssertTrue(roundTrip(NSString(string: "foo")))
|
|
XCTAssertTrue(roundTrip(NSString(string: "'fooéı👨👨🏿🇫🇷🇨🇮'")))
|
|
}
|
|
|
|
func testNSStringFromStringDatabaseValueSuccess() {
|
|
let databaseValue_String = "foo".databaseValue
|
|
XCTAssertEqual(NSString.fromDatabaseValue(databaseValue_String), "foo")
|
|
}
|
|
|
|
func testNSStringFromDatabaseValueFailure() {
|
|
let databaseValue_Null = DatabaseValue.null
|
|
let databaseValue_Int64 = Int64(1).databaseValue
|
|
let databaseValue_Double = Double(100000.1).databaseValue
|
|
let databaseValue_Blob = "bar".data(using: .utf8)!.databaseValue
|
|
XCTAssertNil(NSString.fromDatabaseValue(databaseValue_Null))
|
|
XCTAssertNil(NSString.fromDatabaseValue(databaseValue_Int64))
|
|
XCTAssertNil(NSString.fromDatabaseValue(databaseValue_Double))
|
|
XCTAssertEqual(NSString.fromDatabaseValue(databaseValue_Blob), "bar")
|
|
}
|
|
|
|
}
|