From f67f421a7fc6ffc7c0da1ddfdfcc63a63e7c0abe Mon Sep 17 00:00:00 2001 From: Niels De Graef Date: Thu, 8 Sep 2022 07:15:05 +0200 Subject: 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(+) create mode 100644 tests/core/meson.build create mode 100644 tests/core/test-urls-chunk.vala (limited to 'tests') 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 + * + * 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 . + */ + +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 = [ -- cgit v1.2.1