1 /*
2 * Copyright (C) 2018 Red Hat, Inc.
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 * GNU General Public License for more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>
16 */
17
18 #include <osinfo/osinfo.h>
19
20
21
22 static void
test_basic(void)23 test_basic(void)
24 {
25 OsinfoMedia *media = osinfo_media_new("foo", "x86_64");
26
27 g_assert_true(OSINFO_IS_MEDIA(media));
28 g_assert_cmpstr((const char *)osinfo_entity_get_id(OSINFO_ENTITY(media)), ==, "foo");
29 g_assert_cmpstr((const char *)osinfo_media_get_architecture(media), ==, "x86_64");
30
31 g_object_unref(media);
32 }
33
34
35 static void
test_loaded_attributes(void)36 test_loaded_attributes(void)
37 {
38 OsinfoLoader *loader = osinfo_loader_new();
39 OsinfoDb *db;
40 OsinfoOs *os;
41 OsinfoMediaList *list;
42 gint list_len, i;
43 GError *error = NULL;
44
45 osinfo_loader_process_path(loader, SRCDIR "/tests/dbdata", &error);
46 g_assert_no_error(error);
47 db = osinfo_loader_get_db(loader);
48
49 os = osinfo_db_get_os(db, "http://libosinfo.org/test/os/media");
50
51 list = osinfo_os_get_media_list(os);
52 list_len = osinfo_list_get_length(OSINFO_LIST(list));
53 g_assert_cmpint(list_len, ==, 2);
54
55 for (i = 0; i < list_len; i++) {
56 OsinfoMedia *media = OSINFO_MEDIA(osinfo_list_get_nth(OSINFO_LIST(list), i));
57
58 if (g_str_equal(osinfo_media_get_architecture(media), "x86_64")) {
59 /* non-default values */
60 g_assert_true(osinfo_media_get_live(media));
61 g_assert_cmpint(osinfo_media_get_installer_reboots(media), ==, 3);
62 g_assert_false(osinfo_media_get_eject_after_install(media));
63 g_assert_false(osinfo_media_supports_installer_script(media));
64 } else if (g_str_equal(osinfo_media_get_architecture(media), "x86")) {
65 /* default-values */
66 g_assert_false(osinfo_media_get_live(media));
67 g_assert_cmpint(osinfo_media_get_installer_reboots(media), ==, 1);
68 g_assert_true(osinfo_media_get_eject_after_install(media));
69 g_assert_true(osinfo_media_supports_installer_script(media));
70 }
71 }
72
73 g_object_unref(list);
74 g_object_unref(loader);
75 }
76
77
78 static void
test_loaded_no_installer(void)79 test_loaded_no_installer(void)
80 {
81 OsinfoLoader *loader = osinfo_loader_new();
82 OsinfoDb *db;
83 OsinfoOs *os;
84 OsinfoMediaList *list;
85 gint list_len, i;
86 GError *error = NULL;
87
88 osinfo_loader_process_path(loader, SRCDIR "/tests/dbdata", &error);
89 g_assert_no_error(error);
90 db = osinfo_loader_get_db(loader);
91
92 os = osinfo_db_get_os(db, "http://libosinfo.org/test/os/media-no-installer");
93
94 list = osinfo_os_get_media_list(os);
95 list_len = osinfo_list_get_length(OSINFO_LIST(list));
96 g_assert_cmpint(list_len, ==, 2);
97
98 for (i = 0; i < list_len; i++) {
99 OsinfoMedia *media = OSINFO_MEDIA(osinfo_list_get_nth(OSINFO_LIST(list), i));
100
101 g_assert_false(osinfo_media_supports_installer_script(media));
102 }
103
104 g_object_unref(list);
105 g_object_unref(loader);
106 }
107
108 static void
test_loaded_installer_script(void)109 test_loaded_installer_script(void)
110 {
111
112 OsinfoLoader *loader = osinfo_loader_new();
113 OsinfoDb *db;
114 OsinfoOs *os;
115 OsinfoMedia *media;
116 OsinfoMediaList *list;
117 OsinfoInstallScriptList *scripts;
118 gint list_len;
119 GError *error = NULL;
120
121 osinfo_loader_process_path(loader, SRCDIR "/tests/dbdata", &error);
122 g_assert_no_error(error);
123 db = osinfo_loader_get_db(loader);
124
125 os = osinfo_db_get_os(db, "http://libosinfo.org/test/os/media-installer-script");
126
127 list = osinfo_os_get_media_list(os);
128 list_len = osinfo_list_get_length(OSINFO_LIST(list));
129 g_assert_cmpint(list_len, ==, 1);
130
131 media = OSINFO_MEDIA(osinfo_list_get_nth(OSINFO_LIST(list), 0));
132 g_assert_true(osinfo_media_supports_installer_script(media));
133
134 scripts = osinfo_media_get_install_script_list(media);
135 g_assert_cmpint(osinfo_list_get_length(OSINFO_LIST(scripts)), ==, 1);
136
137 g_object_unref(scripts);
138 g_object_unref(list);
139 g_object_unref(loader);
140 }
141
142 int
main(int argc,char * argv[])143 main(int argc, char *argv[])
144 {
145 g_test_init(&argc, &argv, NULL);
146
147 g_test_add_func("/media/basic", test_basic);
148 g_test_add_func("/media/loaded/attributes", test_loaded_attributes);
149 g_test_add_func("/media/loaded/no-installer", test_loaded_no_installer);
150 g_test_add_func("/media/loaded/installer-script", test_loaded_installer_script);
151
152 /* Upfront so we don't confuse valgrind */
153 osinfo_media_get_type();
154
155 return g_test_run();
156 }
157