diff options
author | Jörg Frings-Fürst <debian@jff.email> | 2025-06-09 10:49:17 +0200 |
---|---|---|
committer | Jörg Frings-Fürst <debian@jff.email> | 2025-06-09 10:49:17 +0200 |
commit | 7868ff68cff97b21fe6d8681f8bc0334849c4d38 (patch) | |
tree | 0df9dca31bec8cf01fe0395818d148befec136ab /test | |
parent | 5b7b3b1dfd5ce7c275881098310667b09562ad27 (diff) |
New upstream version 0.32.13upstream/0.32.13upstream
Diffstat (limited to 'test')
l--------- | test/DatabaseTable.vala | 1 | ||||
-rw-r--r-- | test/RegexpReplace.vala | 55 | ||||
-rw-r--r-- | test/meson.build | 4 |
3 files changed, 60 insertions, 0 deletions
diff --git a/test/DatabaseTable.vala b/test/DatabaseTable.vala new file mode 120000 index 0000000..e860d3b --- /dev/null +++ b/test/DatabaseTable.vala @@ -0,0 +1 @@ +../src/db/DatabaseTable.vala
\ No newline at end of file diff --git a/test/RegexpReplace.vala b/test/RegexpReplace.vala new file mode 100644 index 0000000..b9aaac7 --- /dev/null +++ b/test/RegexpReplace.vala @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +// SPDX-FileCopyrightText: 2025 Jens Georg <mail@jensge.org> + +namespace Db { + public static unowned string IN_MEMORY_NAME = ":memory:"; +} + +class AppWindow { + public static void panic(string args) {} +} + +// Helper class to expose protected members +abstract class TestDb : DatabaseTable { + public static unowned Sqlite.Database get_db() { + DatabaseTable.init(Db.IN_MEMORY_NAME); + return DatabaseTable.db; + } +} + +void main(string[] args) { + GLib.Intl.setlocale(LocaleCategory.ALL, ""); + Test.init(ref args); + Test.add_func("/functional/regexp_replace", () => { + unowned Sqlite.Database db = TestDb.get_db(); + + { + Sqlite.Statement s; + assert(db.prepare_v2("SELECT regexp_replace('^charset=\\w+\\s*', 'charset=Unicode This is a comment, äöü, some encoding perhjaps', '')", -1, out s) == Sqlite.OK); + assert(s.step() == Sqlite.ROW); + assert(s.column_text(0) == "This is a comment, äöü, some encoding perhjaps"); + } + + { + Sqlite.Statement s; + assert(db.prepare_v2("SELECT regexp_replace('^charset=\\w+\\s*', 'test charset=Unicode This is a comment, äöü, some encoding perhjaps', '')", -1, out s) == Sqlite.OK); + assert(s.step() == Sqlite.ROW); + assert(s.column_text(0) == "test charset=Unicode This is a comment, äöü, some encoding perhjaps"); + } + }); + Test.add_func("/functional/catch_invalid_regexp", () => { + unowned Sqlite.Database db = TestDb.get_db(); + assert(db.exec("regexp_replace('charset=\\X*', '', '')") == Sqlite.ERROR); + assert(db.exec("regexp_replace(NULL, '', '')") == Sqlite.ERROR); + assert(db.exec("regexp_replace('pattern', NULL, '')") == Sqlite.ERROR); + + Sqlite.Statement s; + + // NULL replacement should return the original text, even if it matches + assert(db.prepare_v2("SELECT regexp_replace('test\\s+', 'test some pattern', NULL)", -1, out s) == Sqlite.OK); + assert(s.step() == Sqlite.ROW); + assert(s.column_text(0) == "test some pattern"); + + }); + Test.run(); +}
\ No newline at end of file diff --git a/test/meson.build b/test/meson.build index 5319cfc..54ed3dc 100644 --- a/test/meson.build +++ b/test/meson.build @@ -20,6 +20,10 @@ jfif_support_test = executable('jfif-support-test', c_args : ['-DTEST_DATA_DIR="@0@"'.format(meson.current_source_dir())] ) +regexp_replace_test = executable('regexp-replace-test', + ['RegexpReplace.vala', 'DatabaseTable.vala'], + dependencies: [gee, gio, sqlite]) test('natural-collate', natural_collate_test) test('jfif-support', jfif_support_test) +test('regexp-replace', regexp_replace_test)
\ No newline at end of file |