@@ -44,10 +44,13 @@ class TableDefinitionTests: GRDBTestCase {
44
44
) WITHOUT ROWID
45
45
""" )
46
46
}
47
-
48
- #if GRDBCUSTOMSQLITE
47
+ }
48
+
49
+ #if GRDBCUSTOMSQLITE || GRDBCIPHER
50
+ func testStrictTableCreationOptionCustomAndCipher( ) throws {
51
+ let dbQueue = try makeDatabaseQueue ( )
49
52
try dbQueue. inDatabase { db in
50
- try db. create ( table: " test3 " , options: [ . strict, . withoutRowID ] ) { t in
53
+ try db. create ( table: " test3 " , options: [ . strict] ) { t in
51
54
t. column ( " id " , . integer) . primaryKey ( )
52
55
t. column ( " a " , . integer)
53
56
t. column ( " b " , . real)
@@ -63,18 +66,37 @@ class TableDefinitionTests: GRDBTestCase {
63
66
" c " TEXT, \
64
67
" d " BLOB, \
65
68
" e " ANY \
66
- ) STRICT, WITHOUT ROWID
69
+ ) STRICT
67
70
""" )
68
-
69
- do {
70
- try db. execute ( sql: " INSERT INTO test3 (id, a) VALUES (1, 'foo') " )
71
- XCTFail ( " Expected DatabaseError.SQLITE_CONSTRAINT_DATATYPE " )
72
- } catch DatabaseError . SQLITE_CONSTRAINT_DATATYPE {
73
- }
74
71
}
72
+ }
75
73
#endif
74
+
75
+ @available ( iOS 15 . 4 , macOS 12 . 4 , tvOS 15 . 4 , watchOS 8 . 5 , * )
76
+ func testStrictTableCreationOption( ) throws {
77
+ let dbQueue = try makeDatabaseQueue ( )
78
+ try dbQueue. inDatabase { db in
79
+ try db. create ( table: " test3 " , options: [ . strict] ) { t in
80
+ t. column ( " id " , . integer) . primaryKey ( )
81
+ t. column ( " a " , . integer)
82
+ t. column ( " b " , . real)
83
+ t. column ( " c " , . text)
84
+ t. column ( " d " , . blob)
85
+ t. column ( " e " , . any)
86
+ }
87
+ assertEqualSQL ( lastSQLQuery!, """
88
+ CREATE TABLE " test3 " ( \
89
+ " id " INTEGER PRIMARY KEY, \
90
+ " a " INTEGER, \
91
+ " b " REAL, \
92
+ " c " TEXT, \
93
+ " d " BLOB, \
94
+ " e " ANY \
95
+ ) STRICT
96
+ """ )
97
+ }
76
98
}
77
-
99
+
78
100
func testColumnLiteral( ) throws {
79
101
let dbQueue = try makeDatabaseQueue ( )
80
102
try dbQueue. inDatabase { db in
0 commit comments