Add CI/CD configuration and API documentation
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
import XCTest
|
||||
import GRDB
|
||||
|
||||
class DatabasePoolCollationTests: GRDBTestCase {
|
||||
|
||||
func testCollationIsSharedBetweenWriterAndReaders() throws {
|
||||
dbConfiguration.prepareDatabase { db in
|
||||
let collation1 = DatabaseCollation("collation1") { (string1, string2) in
|
||||
return (string1 == string2) ? .orderedSame : ((string1 < string2) ? .orderedAscending : .orderedDescending)
|
||||
}
|
||||
db.add(collation: collation1)
|
||||
|
||||
let collation2 = DatabaseCollation("collation2") { (string1, string2) in
|
||||
return (string1 == string2) ? .orderedSame : ((string1 < string2) ? .orderedDescending : .orderedAscending)
|
||||
}
|
||||
db.add(collation: collation2)
|
||||
}
|
||||
let dbPool = try makeDatabasePool()
|
||||
|
||||
try dbPool.write { db in
|
||||
// Both collations are available in writer
|
||||
try db.execute(sql: """
|
||||
CREATE TABLE items (text TEXT COLLATE collation2);
|
||||
INSERT INTO items (text) VALUES ('a');
|
||||
INSERT INTO items (text) VALUES ('b');
|
||||
INSERT INTO items (text) VALUES ('c');
|
||||
""")
|
||||
XCTAssertEqual(try String.fetchAll(db, sql: "SELECT text FROM items ORDER BY text"), ["c", "b", "a"])
|
||||
XCTAssertEqual(try String.fetchAll(db, sql: "SELECT text FROM items ORDER BY text COLLATE collation1"), ["a", "b", "c"])
|
||||
}
|
||||
|
||||
try dbPool.read { db in
|
||||
// Both collations are available in reader
|
||||
XCTAssertEqual(try String.fetchAll(db, sql: "SELECT text FROM items ORDER BY text"), ["c", "b", "a"])
|
||||
XCTAssertEqual(try String.fetchAll(db, sql: "SELECT text FROM items ORDER BY text COLLATE collation1"), ["a", "b", "c"])
|
||||
XCTAssertEqual(try String.fetchAll(db, sql: "SELECT text FROM items ORDER BY text COLLATE collation2"), ["c", "b", "a"])
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user