/* ** Copyright (C) 2014 Jakub Sitnicki ** ** 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 3, 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, write to the Free Software Foundation, ** Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ** */ #include "config.h" #include #include "test-mu-common.hh" #include "mu-container.hh" static gboolean container_has_children (const MuContainer *c) { return c && c->child; } static gboolean container_is_sibling_of (const MuContainer *c, const MuContainer *sibling) { const MuContainer *cur; for (cur = c; cur; cur = cur->next) { if (cur == sibling) return TRUE; } return container_is_sibling_of (sibling, c); } static void test_mu_container_splice_children_when_parent_has_no_siblings (void) { MuContainer *child, *parent, *root_set; child = mu_container_new (NULL, 0, "child"); parent = mu_container_new (NULL, 0, "parent"); parent = mu_container_append_children (parent, child); root_set = parent; root_set = mu_container_splice_children (root_set, parent); g_assert (root_set != NULL); g_assert (!container_has_children(parent)); g_assert (container_is_sibling_of (root_set, child)); mu_container_destroy(parent); mu_container_destroy(child); } int main (int argc, char *argv[]) { g_test_init (&argc, &argv, NULL); g_test_add_func ("/mu-container/mu-container-splice-children-when-parent-has-no-siblings", test_mu_container_splice_children_when_parent_has_no_siblings); g_log_set_handler (NULL, (GLogLevelFlags)(G_LOG_LEVEL_MASK | G_LOG_FLAG_FATAL| G_LOG_FLAG_RECURSION), (GLogFunc)black_hole, NULL); return g_test_run (); }