summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorNiels De Graef <nielsdegraef@gmail.com>2022-09-08 07:15:05 +0200
committerNiels De Graef <nielsdegraef@gmail.com>2022-09-08 07:16:50 +0200
commitf67f421a7fc6ffc7c0da1ddfdfcc63a63e7c0abe (patch)
tree93a64470431e69dea3415aceb2b96ca35277a609 /tests
parentf44c598969203edca388516a5cb4a3c096dcb958 (diff)
downloadgnome-contacts-f67f421a7fc6ffc7c0da1ddfdfcc63a63e7c0abe.tar.gz
Add a first unit test for UrlsChunk
It's not really a complex thing, but this is basically laying the foundations for properly unit testing the classes in core
Diffstat (limited to 'tests')
-rw-r--r--tests/core/meson.build14
-rw-r--r--tests/core/test-urls-chunk.vala55
-rw-r--r--tests/meson.build1
3 files changed, 70 insertions, 0 deletions
diff --git a/tests/core/meson.build b/tests/core/meson.build
new file mode 100644
index 0000000..ecb8879
--- /dev/null
+++ b/tests/core/meson.build
@@ -0,0 +1,14 @@
+test_names = [
+ 'test-urls-chunk',
+]
+
+foreach _test : test_names
+ test_bin = executable(_test,
+ files('@0@.vala'.format(_test)),
+ dependencies: libcontactscore_dep,
+ )
+
+ test(_test, test_bin,
+ suite: 'core',
+ )
+endforeach
diff --git a/tests/core/test-urls-chunk.vala b/tests/core/test-urls-chunk.vala
new file mode 100644
index 0000000..29e5cbf
--- /dev/null
+++ b/tests/core/test-urls-chunk.vala
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2022 Niels De Graef <nielsdegraef@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+void main (string[] args) {
+ Test.init (ref args);
+ Test.add_func ("/core/urls-chunk/property_name_chunk", test_property_name);
+ Test.add_func ("/core/urls-chunk/get_absolute_url", test_get_absolute_url);
+ Test.run ();
+}
+
+// Make sure that "urls" maps to a UrlsChunk
+private void test_property_name () {
+ var contact = new Contacts.Contact.empty ();
+
+ var chunk = contact.create_chunk ("urls", null);
+ assert_nonnull (chunk);
+ assert_true (chunk is Contacts.UrlsChunk);
+ assert_true (chunk.property_name == "urls");
+}
+
+private void test_get_absolute_url () {
+ var contact = new Contacts.Contact.empty ();
+ var chunk = (Contacts.UrlsChunk) contact.create_chunk ("urls", null);
+ assert_nonnull (chunk);
+ var url = (Contacts.Url) chunk.get_item (0);
+
+ // Test with a proper scheme attached
+ url.raw_url = "https://gnome.org";
+ assert_true (url.raw_url == "https://gnome.org");
+ assert_true (url.get_absolute_url () == "https://gnome.org");
+
+ // Also if it's not HTTPS
+ url.raw_url = "ftp://gnome.org";
+ assert_true (url.raw_url == "ftp://gnome.org");
+ assert_true (url.get_absolute_url () == "ftp://gnome.org");
+
+ // and if there's no scheme supplied
+ url.raw_url = "gnome.org";
+ assert_true (url.raw_url == "gnome.org");
+ assert_true (url.get_absolute_url () == "https://gnome.org");
+}
diff --git a/tests/meson.build b/tests/meson.build
index 6dcfcf1..33c33fc 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,3 +1,4 @@
+subdir('core')
subdir('io')
test_names = [