/* * Copyright (C) 2009-2012, 2014 Red Hat, Inc. * * 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 */ #include static void test_basic(void) { OsinfoPlatform *platform = osinfo_platform_new("awesome"); g_assert_true(OSINFO_IS_PLATFORM(platform)); g_assert_cmpstr(osinfo_entity_get_id(OSINFO_ENTITY(platform)), ==, "awesome"); g_object_unref(platform); } static void test_devices(void) { OsinfoPlatform *hv = osinfo_platform_new("awesome"); OsinfoDevice *dev1 = osinfo_device_new("e1000"); OsinfoDevice *dev2 = osinfo_device_new("rtl8139"); OsinfoDeviceLink *link1; OsinfoDeviceLink *link2; OsinfoDeviceList *devices; gboolean hasDev1; gboolean hasDev2; gboolean hasBad; link1 = osinfo_platform_add_device(hv, dev1); osinfo_entity_add_param(OSINFO_ENTITY(link1), "device", "pci-e1000"); link2 = osinfo_platform_add_device(hv, dev2); osinfo_entity_add_param(OSINFO_ENTITY(link2), "device", "pci-8139"); devices = osinfo_platform_get_devices(hv, NULL); g_assert_cmpint(osinfo_list_get_length(OSINFO_LIST(devices)), ==, 2); hasDev1 = FALSE; hasDev2 = FALSE; hasBad = FALSE; for (int i = 0; i < osinfo_list_get_length(OSINFO_LIST(devices)); i++) { OsinfoEntity *ent = osinfo_list_get_nth(OSINFO_LIST(devices), i); g_assert_true(OSINFO_IS_DEVICE(ent)); if (OSINFO_DEVICE(ent) == dev1) hasDev1 = TRUE; else if (OSINFO_DEVICE(ent) == dev2) hasDev2 = TRUE; else hasBad = TRUE; } g_assert_true(hasDev1); g_assert_true(hasDev2); g_assert_false(hasBad); g_object_unref(devices); g_object_unref(dev1); g_object_unref(dev2); g_object_unref(hv); } static void test_devices_filter(void) { OsinfoPlatform *hv = osinfo_platform_new("awesome"); OsinfoDevice *dev1 = osinfo_device_new("e1000"); OsinfoDevice *dev2 = osinfo_device_new("sb16"); OsinfoFilter *filter = osinfo_filter_new(); OsinfoDeviceLink *link1; OsinfoDeviceLink *link2; OsinfoDeviceList *devices; OsinfoEntity *ent; osinfo_entity_add_param(OSINFO_ENTITY(dev1), "class", "network"); osinfo_entity_add_param(OSINFO_ENTITY(dev2), "class", "audio"); link1 = osinfo_platform_add_device(hv, dev1); osinfo_entity_add_param(OSINFO_ENTITY(link1), "device", "pci-e1000"); link2 = osinfo_platform_add_device(hv, dev2); osinfo_entity_add_param(OSINFO_ENTITY(link2), "device", "isa-sb16"); osinfo_filter_add_constraint(filter, "class", "network"); devices = osinfo_platform_get_devices(hv, filter); g_assert_cmpint(osinfo_list_get_length(OSINFO_LIST(devices)), ==, 1); ent = osinfo_list_get_nth(OSINFO_LIST(devices), 0); g_assert_true(OSINFO_IS_DEVICE(ent)); g_assert_true(OSINFO_DEVICE(ent) == dev1); g_object_unref(devices); g_object_unref(filter); g_object_unref(dev1); g_object_unref(dev2); g_object_unref(hv); } int main(int argc, char *argv[]) { g_test_init(&argc, &argv, NULL); g_test_add_func("/platform/basic", test_basic); g_test_add_func("/platform/devices", test_devices); g_test_add_func("/platform/devices_filter", test_devices_filter); /* Upfront so we don't confuse valgrind */ osinfo_platform_get_type(); osinfo_device_get_type(); osinfo_devicelist_get_type(); osinfo_filter_get_type(); return g_test_run(); }