[gnome-contacts/nielsdg/core-should-stay-core: 11/11] Add a first unit test for UrlsChunk




commit f67f421a7fc6ffc7c0da1ddfdfcc63a63e7c0abe
Author: Niels De Graef <nielsdegraef gmail com>
Date:   Thu Sep 8 07:15:05 2022 +0200

    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

 tests/core/meson.build          | 14 +++++++++++
 tests/core/test-urls-chunk.vala | 55 +++++++++++++++++++++++++++++++++++++++++
 tests/meson.build               |  1 +
 3 files changed, 70 insertions(+)
---
diff --git a/tests/core/meson.build b/tests/core/meson.build
new file mode 100644
index 00000000..ecb8879f
--- /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 00000000..29e5cbf4
--- /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 6dcfcf12..33c33fc8 100644
--- a/tests/meson.build
+++ b/tests/meson.build
@@ -1,3 +1,4 @@
+subdir('core')
 subdir('io')
 
 test_names = [


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]