conformance/invariants: Test that visibility is not recursive
authorEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 5 Mar 2012 17:45:23 +0000 (17:45 +0000)
committerEmmanuele Bassi <ebassi@linux.intel.com>
Mon, 5 Mar 2012 17:45:23 +0000 (17:45 +0000)
The show and hide methods should not recurse; that is the job of
show_all and hide_all, which are deprecated.

tests/conform/actor-invariants.c
tests/conform/test-conform-main.c

index 5553abb..893dfa4 100644 (file)
@@ -123,6 +123,48 @@ actor_mapped (TestConformSimpleFixture *fixture,
 }
 
 void
+actor_visibility_not_recursive (TestConformSimpleFixture *fixture,
+                                gconstpointer             data)
+{
+  ClutterActor *actor, *group;
+  ClutterActor *stage;
+
+  stage = clutter_stage_new ();
+  group = clutter_actor_new ();
+  actor = clutter_actor_new ();
+
+  clutter_actor_hide (group); /* don't show, so won't map */
+  clutter_actor_hide (actor); /* don't show, so won't map */
+
+  g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (stage)));
+  g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (group)));
+  g_assert (!(CLUTTER_ACTOR_IS_VISIBLE (actor)));
+
+  clutter_actor_add_child (stage, group);
+  clutter_actor_add_child (group, actor);
+
+  clutter_actor_show (actor);
+  g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
+  g_assert (!CLUTTER_ACTOR_IS_VISIBLE (group));
+  g_assert (!CLUTTER_ACTOR_IS_VISIBLE (stage));
+
+  clutter_actor_show (stage);
+  g_assert (CLUTTER_ACTOR_IS_VISIBLE (actor));
+  g_assert (!CLUTTER_ACTOR_IS_VISIBLE (group));
+  g_assert (CLUTTER_ACTOR_IS_VISIBLE (stage));
+
+  clutter_actor_hide (actor);
+  clutter_actor_hide (group);
+  clutter_actor_hide (stage);
+  g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
+
+  clutter_actor_show (stage);
+  g_assert (!CLUTTER_ACTOR_IS_VISIBLE (actor));
+
+  clutter_actor_destroy (stage);
+}
+
+void
 actor_realize_not_recursive (TestConformSimpleFixture *fixture,
                              gconstpointer             data)
 {
index 6852b11..a47be11 100644 (file)
@@ -152,6 +152,7 @@ main (int argc, char **argv)
 
   TEST_CONFORM_SIMPLE ("/actor/invariants", actor_initial_state);
   TEST_CONFORM_SIMPLE ("/actor/invariants", actor_shown_not_parented);
+  TEST_CONFORM_SIMPLE ("/actor/invariants", actor_visibility_not_recursive);
   TEST_CONFORM_SIMPLE ("/actor/invariants", actor_realized);
   TEST_CONFORM_SIMPLE ("/actor/invariants", actor_realize_not_recursive);
   TEST_CONFORM_SIMPLE ("/actor/invariants", actor_map_recursive);