Files
UUVPN/iOS-SwiftUI-Code/GRDB.swift-6.29.3/Tests/GRDBTests/FoundationNSStringTests.swift
T
2025-01-28 12:28:03 +08:00

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")
}
}