This commit is contained in:
zeus
2025-01-28 12:28:03 +08:00
parent 738c373a77
commit ec96756800
2534 changed files with 486292 additions and 0 deletions
@@ -0,0 +1,55 @@
import XCTest
import GRDB
private class FetchableParent : DatabaseValueConvertible, CustomStringConvertible {
var databaseValue: DatabaseValue { "Parent".databaseValue }
class func fromDatabaseValue(_ dbValue: DatabaseValue) -> Self? {
self.init()
}
required init() {
}
var description: String { "Parent" }
}
private class FetchableChild : FetchableParent {
/// Returns a value that can be stored in the database.
override var databaseValue: DatabaseValue {
"Child".databaseValue
}
override var description: String { "Child" }
}
class DatabaseValueConvertibleSubclassTests: GRDBTestCase {
func testParent() throws {
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.execute(sql: "CREATE TABLE parents (name TEXT)")
try db.execute(sql: "INSERT INTO parents (name) VALUES (?)", arguments: [FetchableParent()])
let string = try String.fetchOne(db, sql: "SELECT * FROM parents")!
XCTAssertEqual(string, "Parent")
let parent = try FetchableParent.fetchOne(db, sql: "SELECT * FROM parents")!
XCTAssertEqual(parent.description, "Parent")
let parents = try FetchableParent.fetchAll(db, sql: "SELECT * FROM parents")
XCTAssertEqual(parents.first!.description, "Parent")
}
}
func testChild() throws {
let dbQueue = try makeDatabaseQueue()
try dbQueue.inDatabase { db in
try db.execute(sql: "CREATE TABLE children (name TEXT)")
try db.execute(sql: "INSERT INTO children (name) VALUES (?)", arguments: [FetchableChild()])
let string = try String.fetchOne(db, sql: "SELECT * FROM children")!
XCTAssertEqual(string, "Child")
let child = try FetchableChild.fetchOne(db, sql: "SELECT * FROM children")!
XCTAssertEqual(child.description, "Child")
let children = try FetchableChild.fetchAll(db, sql: "SELECT * FROM children")
XCTAssertEqual(children.first!.description, "Child")
}
}
}