ali@38: /* ali@38: * Copyright (C) 2016 J. Ali Harlow ali@38: * ali@38: * This program is free software; you can redistribute it and/or modify ali@38: * it under the terms of the GNU General Public License as published by ali@38: * the Free Software Foundation; either version 2 of the License, or ali@38: * (at your option) any later version. ali@38: * ali@38: * This program is distributed in the hope that it will be useful, ali@38: * but WITHOUT ANY WARRANTY; without even the implied warranty of ali@38: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ali@38: * GNU General Public License for more details. ali@38: * ali@38: * You should have received a copy of the GNU General Public License along ali@38: * with this program; if not, write to the Free Software Foundation, Inc., ali@38: * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ali@38: */ ali@38: ali@38: #include ali@38: #include ali@38: #include ali@38: #include ali@38: #include ali@38: #include ali@38: #include ali@38: #include "treemodel.h" ali@38: ali@38: static PloverPackage *package_getref(const char *name) ali@38: { ali@38: GSList *packages,*lnk; ali@38: GError *err=NULL; ali@38: PloverPackageSet *package_set; ali@38: PloverPackage *package; ali@38: package_set=plover_package_set_new_from_yum("../yum-repo-test-dir",NULL, ali@38: &err); ali@38: if (!package_set) ali@38: g_error("../yum-repo-test-dir: %s",err->message); ali@38: packages=plover_package_set_get_packages(package_set); ali@38: for(lnk=packages;lnk;lnk=lnk->next) ali@38: { ali@38: package=lnk->data; ali@38: if (!strcmp(plover_package_get_name(package),name)) ali@38: break; ali@38: } ali@38: if (!lnk) ali@38: package=NULL; ali@38: if (package) ali@38: g_object_ref(package); ali@38: g_object_unref(package_set); ali@38: return package; ali@38: } ali@38: ali@38: static void test_empty(void) ali@38: { ali@38: PloverPackage *package; ali@38: PloverPackageFileStore *store; ali@38: package=package_getref("zappy-tools"); ali@38: store=plover_package_file_store_new_from_package(package); ali@38: g_object_unref(package); ali@38: test_tree_model(GTK_TREE_MODEL(store)); ali@38: g_object_unref(store); ali@38: } ali@38: ali@38: static void test_basic(void) ali@38: { ali@38: int i; ali@38: const char *name; ali@38: GValue value={0,}; ali@38: GtkTreeModel *model; ali@38: GtkTreeIter iter; ali@38: PloverPackage *package; ali@38: PloverPackageFileStore *store; ali@38: GList *expected,*lnk; ali@38: package=package_getref("zsh"); ali@38: store=plover_package_file_store_new_from_package(package); ali@38: g_object_unref(package); ali@38: model=GTK_TREE_MODEL(store); ali@38: test_tree_model(model); ali@38: expected=g_list_prepend(NULL,(gpointer)g_intern_string("/etc/zsh.conf")); ali@38: expected=g_list_prepend(expected,(gpointer)g_intern_string("/usr/bin/zsh")); ali@38: g_assert_cmpint(gtk_tree_model_get_n_columns(model),==,1); ali@38: g_assert_cmpint(gtk_tree_model_get_column_type(model,0),==,G_TYPE_STRING); ali@38: for(i=0;;i++) ali@38: { ali@38: if (!gtk_tree_model_iter_nth_child(model,&iter,NULL,i)) ali@38: break; ali@38: gtk_tree_model_get_value(model,&iter,0,&value); ali@38: name=g_value_get_string(&value); ali@38: lnk=g_list_find(expected,g_intern_string(name)); ali@38: if (!lnk) ali@38: g_warning("Unexpected file in zsh package: %s",name); ali@38: else ali@38: expected=g_list_delete_link(expected,lnk); ali@38: g_value_unset(&value); ali@38: } ali@38: if (expected) ali@38: g_warning("%d missing file%s in set, including %s", ali@38: g_list_length(expected),g_list_length(expected)==1?"":"s", ali@38: expected->data); ali@38: g_object_unref(store); ali@38: } ali@38: ali@38: int main(int argc,char **argv) ali@38: { ali@38: int retval; ali@38: gtk_test_init(&argc,&argv,NULL); ali@38: g_test_bug_base("mailto:ali@juiblex.co.uk"); ali@38: g_test_add_func("/packagefilestore/empty",test_empty); ali@38: g_test_add_func("/packagefilestore/basic",test_basic); ali@38: retval=g_test_run(); ali@38: return retval; ali@38: }