@@ -173,8 +173,36 @@ class FTS5TokenizerTests: GRDBTestCase {
173173 }
174174 }
175175
176- #if GRDBCUSTOMSQLITE
176+ #if GRDBCUSTOMSQLITE || SQLITE_HAS_CODEC
177177 func testUnicode61TokenizerDiacriticsRemove( ) throws {
178+ guard Database . sqliteLibVersionNumber >= 3027000 else {
179+ throw XCTSkip ( " remove_diacritics=2 is not available " )
180+ }
181+ let dbQueue = try makeDatabaseQueue ( )
182+ try dbQueue. inDatabase { db in
183+ try db. create ( virtualTable: " documents " , using: FTS5 ( ) ) { t in
184+ t. tokenizer = . unicode61( diacritics: . remove)
185+ t. column ( " content " )
186+ }
187+
188+ // simple match
189+ XCTAssertTrue ( match ( db, " abcDÉF " , " abcDÉF " ) )
190+
191+ // English stemming
192+ XCTAssertFalse ( match ( db, " database " , " databases " ) )
193+
194+ // diacritics in latin characters
195+ XCTAssertTrue ( match ( db, " eéÉ " , " Èèe " ) )
196+
197+ // unicode case
198+ XCTAssertTrue ( match ( db, " jérôme " , " JÉRÔME " ) )
199+ }
200+ }
201+ #else
202+ func testUnicode61TokenizerDiacriticsRemove( ) throws {
203+ guard #available( iOS 14 , macOS 10 . 16 , tvOS 14 , * ) else {
204+ throw XCTSkip ( " remove_diacritics=2 is not available " )
205+ }
178206 let dbQueue = try makeDatabaseQueue ( )
179207 try dbQueue. inDatabase { db in
180208 try db. create ( virtualTable: " documents " , using: FTS5 ( ) ) { t in
0 commit comments