|
13 | 13 | ** Basic tests of CSQLite statically-linked extension functionality. |
14 | 14 | */ |
15 | 15 |
|
16 | | -import XCTest |
| 16 | +import Testing |
| 17 | +import Foundation |
17 | 18 | @testable import CSQLite |
18 | 19 |
|
19 | | -final class CSQLiteExtensionTests: XCTestCase { |
| 20 | +#if swift(<6.1) || THREADSAFE_0 |
| 21 | +@MainActor |
| 22 | +#endif |
| 23 | +@Suite struct CSQLiteExtensionTests { |
20 | 24 | #if swift(<6.1) || OMIT_AUTOINIT |
21 | | - override class func setUp() { |
22 | | - super.setUp() |
| 25 | + init() throws { |
23 | 26 | // It's necessary to call sqlite3_initialize() since SQLITE_OMIT_AUTOINIT is defined |
24 | | - XCTAssertEqual(sqlite3_initialize(), SQLITE_OK) |
| 27 | + try #require(sqlite3_initialize() == SQLITE_OK) |
25 | 28 | } |
26 | 29 | #endif |
27 | 30 |
|
28 | | - func testCarray() { |
29 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_carray(), SQLITE_OK) |
| 31 | + @Test func carray() throws { |
| 32 | + try #require(csqlite_sqlite3_auto_extension_carray() == SQLITE_OK) |
30 | 33 |
|
31 | 34 | var db: OpaquePointer? |
32 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 35 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
33 | 36 |
|
34 | | - XCTAssertEqual(sqlite3_exec(db, "create table t1(a);", nil, nil, nil), SQLITE_OK) |
35 | | - XCTAssertEqual(sqlite3_exec(db, "insert into t1(a) values (2),(3),(4),(5);", nil, nil, nil), SQLITE_OK) |
| 37 | + #expect(sqlite3_exec(db, "create table t1(a);", nil, nil, nil) == SQLITE_OK) |
| 38 | + #expect(sqlite3_exec(db, "insert into t1(a) values (2),(3),(4),(5);", nil, nil, nil) == SQLITE_OK) |
36 | 39 |
|
37 | 40 | var stmt: OpaquePointer? |
38 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select a from t1 where a in carray(?);", -1, &stmt, nil), SQLITE_OK) |
| 41 | + #expect(sqlite3_prepare_v2(db, "select a from t1 where a in carray(?);", -1, &stmt, nil) == SQLITE_OK) |
39 | 42 | let array: [Int32] = [3,5]; |
40 | 43 | let mem = UnsafeMutableBufferPointer<Int32>.allocate(capacity: array.count) |
41 | 44 | _ = mem.initialize(from: array) |
42 | | - XCTAssertEqual(sqlite3_carray_bind(stmt, 1, mem.baseAddress, Int32(array.count), CARRAY_INT32, { |
| 45 | + #expect(sqlite3_carray_bind(stmt, 1, mem.baseAddress, Int32(array.count), CARRAY_INT32, { |
43 | 46 | $0?.deallocate() |
44 | | - }), SQLITE_OK) |
45 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
46 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 3) |
47 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
48 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 5) |
49 | | - |
50 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
51 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 47 | + }) == SQLITE_OK) |
| 48 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 49 | + #expect(sqlite3_column_int(stmt, 0) == 3) |
| 50 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 51 | + #expect(sqlite3_column_int(stmt, 0) == 5) |
| 52 | + |
| 53 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 54 | + #expect(sqlite3_close(db) == SQLITE_OK) |
52 | 55 | } |
53 | 56 |
|
54 | | - func testDecimal() { |
55 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_decimal(), SQLITE_OK) |
| 57 | + @Test func decimal() throws { |
| 58 | + try #require(csqlite_sqlite3_auto_extension_decimal() == SQLITE_OK) |
56 | 59 |
|
57 | 60 | var db: OpaquePointer? |
58 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 61 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
59 | 62 |
|
60 | 63 | var stmt: OpaquePointer? |
61 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select decimal_add('1.67','2.33');", -1, &stmt, nil), SQLITE_OK) |
62 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
| 64 | + #expect(sqlite3_prepare_v2(db, "select decimal_add('1.67','2.33');", -1, &stmt, nil) == SQLITE_OK) |
| 65 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
63 | 66 | let r = String(cString: sqlite3_column_text(stmt, 0)) |
64 | | - XCTAssertEqual(r, "4.00") |
| 67 | + #expect(r == "4.00") |
65 | 68 |
|
66 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
67 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 69 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 70 | + #expect(sqlite3_close(db) == SQLITE_OK) |
68 | 71 | } |
69 | 72 |
|
70 | | - func testIEEE() { |
71 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_ieee754(), SQLITE_OK) |
| 73 | + @Test func ieee() throws { |
| 74 | + try #require(csqlite_sqlite3_auto_extension_ieee754() == SQLITE_OK) |
72 | 75 |
|
73 | 76 | var db: OpaquePointer? |
74 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 77 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
75 | 78 |
|
76 | 79 | var stmt: OpaquePointer? |
77 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select ieee754(45.25);", -1, &stmt, nil), SQLITE_OK) |
78 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
| 80 | + #expect(sqlite3_prepare_v2(db, "select ieee754(45.25);", -1, &stmt, nil) == SQLITE_OK) |
| 81 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
79 | 82 | let f = String(cString: sqlite3_column_text(stmt, 0)) |
80 | | - XCTAssertEqual(f, "ieee754(181,-2)") |
| 83 | + #expect(f == "ieee754(181,-2)") |
81 | 84 |
|
82 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
83 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 85 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 86 | + #expect(sqlite3_close(db) == SQLITE_OK) |
84 | 87 | } |
85 | 88 |
|
86 | | - func testPercentile() { |
87 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_percentile(), SQLITE_OK) |
| 89 | + @Test func percentile() throws { |
| 90 | + try #require(csqlite_sqlite3_auto_extension_percentile() == SQLITE_OK) |
88 | 91 |
|
89 | 92 | var db: OpaquePointer? |
90 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 93 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
91 | 94 |
|
92 | 95 | var stmt: OpaquePointer? |
93 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select median(33);", -1, &stmt, nil), SQLITE_OK) |
94 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
95 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 33) |
| 96 | + #expect(sqlite3_prepare_v2(db, "select median(33);", -1, &stmt, nil) == SQLITE_OK) |
| 97 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 98 | + #expect(sqlite3_column_int(stmt, 0) == 33) |
96 | 99 |
|
97 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
98 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 100 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 101 | + #expect(sqlite3_close(db) == SQLITE_OK) |
99 | 102 | } |
100 | 103 |
|
101 | | - func testSeries() { |
102 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_series(), SQLITE_OK) |
| 104 | + @Test func series() throws { |
| 105 | + try #require(csqlite_sqlite3_auto_extension_series() == SQLITE_OK) |
103 | 106 |
|
104 | 107 | var db: OpaquePointer? |
105 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 108 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
106 | 109 |
|
107 | 110 | var stmt: OpaquePointer? |
108 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select * from generate_series(10,20,5);", -1, &stmt, nil), SQLITE_OK) |
109 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
110 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 10) |
111 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
112 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 15) |
113 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
114 | | - XCTAssertEqual(sqlite3_column_int(stmt, 0), 20) |
115 | | - |
116 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
117 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 111 | + #expect(sqlite3_prepare_v2(db, "select * from generate_series(10,20,5);", -1, &stmt, nil) == SQLITE_OK) |
| 112 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 113 | + #expect(sqlite3_column_int(stmt, 0) == 10) |
| 114 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 115 | + #expect(sqlite3_column_int(stmt, 0) == 15) |
| 116 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
| 117 | + #expect(sqlite3_column_int(stmt, 0) == 20) |
| 118 | + |
| 119 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 120 | + #expect(sqlite3_close(db) == SQLITE_OK) |
118 | 121 | } |
119 | 122 |
|
120 | | - func testSHA3() { |
121 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_sha3(), SQLITE_OK) |
| 123 | + @Test func sha3() throws { |
| 124 | + try #require(csqlite_sqlite3_auto_extension_sha3() == SQLITE_OK) |
122 | 125 |
|
123 | 126 | var db: OpaquePointer? |
124 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 127 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
125 | 128 |
|
126 | 129 | var stmt: OpaquePointer? |
127 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select lower(hex(sha3('sqlite')));", -1, &stmt, nil), SQLITE_OK) |
128 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
| 130 | + #expect(sqlite3_prepare_v2(db, "select lower(hex(sha3('sqlite')));", -1, &stmt, nil) == SQLITE_OK) |
| 131 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
129 | 132 | let h = String(cString: sqlite3_column_text(stmt, 0)) |
130 | | - XCTAssertEqual(h, "963a88636d4c9cc3f011dfc9dc0058e96669d80a89893c68c0bb08a6a8208db3") |
| 133 | + #expect(h == "963a88636d4c9cc3f011dfc9dc0058e96669d80a89893c68c0bb08a6a8208db3") |
131 | 134 |
|
132 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
133 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 135 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 136 | + #expect(sqlite3_close(db) == SQLITE_OK) |
134 | 137 | } |
135 | 138 |
|
136 | | - func testUUID() { |
137 | | - XCTAssertEqual(csqlite_sqlite3_auto_extension_uuid(), SQLITE_OK) |
| 139 | + @Test func uuid() throws { |
| 140 | + try #require(csqlite_sqlite3_auto_extension_uuid() == SQLITE_OK) |
138 | 141 |
|
139 | 142 | var db: OpaquePointer? |
140 | | - XCTAssertEqual(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil), SQLITE_OK) |
| 143 | + #expect(sqlite3_open_v2(":memory:", &db, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, nil) == SQLITE_OK) |
141 | 144 |
|
142 | 145 | var stmt: OpaquePointer? |
143 | | - XCTAssertEqual(sqlite3_prepare_v2(db, "select uuid();", -1, &stmt, nil), SQLITE_OK) |
144 | | - XCTAssertEqual(sqlite3_step(stmt), SQLITE_ROW) |
| 146 | + #expect(sqlite3_prepare_v2(db, "select uuid();", -1, &stmt, nil) == SQLITE_OK) |
| 147 | + #expect(sqlite3_step(stmt) == SQLITE_ROW) |
145 | 148 | let u = String(cString: sqlite3_column_text(stmt, 0)) |
146 | 149 | let comps = u.components(separatedBy: "-") |
147 | | - XCTAssertEqual(comps.count, 5) |
148 | | - XCTAssertEqual(comps[0].count, 8) |
149 | | - XCTAssertEqual(comps[1].count, 4) |
150 | | - XCTAssertEqual(comps[2].count, 4) |
151 | | - XCTAssertEqual(comps[3].count, 4) |
152 | | - XCTAssertEqual(comps[4].count, 12) |
| 150 | + #expect(comps.count == 5) |
| 151 | + #expect(comps[0].count == 8) |
| 152 | + #expect(comps[1].count == 4) |
| 153 | + #expect(comps[2].count == 4) |
| 154 | + #expect(comps[3].count == 4) |
| 155 | + #expect(comps[4].count == 12) |
153 | 156 | let uu = UUID(uuidString: u) |
154 | | - XCTAssertNotNil(uu) |
| 157 | + #expect(uu != nil) |
155 | 158 |
|
156 | | - XCTAssertEqual(sqlite3_finalize(stmt), SQLITE_OK) |
157 | | - XCTAssertEqual(sqlite3_close(db), SQLITE_OK) |
| 159 | + #expect(sqlite3_finalize(stmt) == SQLITE_OK) |
| 160 | + #expect(sqlite3_close(db) == SQLITE_OK) |
158 | 161 | } |
159 | 162 | } |
0 commit comments