Evas tests: Added some format removal tests.
authortasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 19 Jul 2011 13:19:18 +0000 (13:19 +0000)
committertasn <tasn@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Tue, 19 Jul 2011 13:19:18 +0000 (13:19 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@61502 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

src/tests/evas_test_textblock.c

index ef96e8e..d3b49d5 100644 (file)
@@ -563,6 +563,178 @@ START_TEST(evas_textblock_cursor)
 }
 END_TEST
 
+START_TEST(evas_textblock_format_removal)
+{
+   START_TB_TEST();
+   const char *buf = "Th<b>is a<a>tes</a>st</b>.";
+   const Evas_Object_Textblock_Node_Format *fnode;
+   Evas_Textblock_Cursor *main_cur = evas_object_textblock_cursor_get(tb);
+   evas_object_textblock_text_markup_set(tb, buf);
+
+   /* Remove the "b" pair. */
+   fnode = evas_textblock_node_format_first_get(tb);
+   evas_textblock_node_format_remove_pair(tb,
+         (Evas_Object_Textblock_Node_Format *) fnode);
+
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ a"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- a"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   /* Now also remove the a pair */
+   fnode = evas_textblock_node_format_first_get(tb);
+   evas_textblock_node_format_remove_pair(tb,
+         (Evas_Object_Textblock_Node_Format *) fnode);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (fnode);
+
+   /* Remove the "a" pair. */
+   evas_object_textblock_text_markup_set(tb, buf);
+
+   fnode = evas_textblock_node_format_first_get(tb);
+   fnode = evas_textblock_node_format_next_get(fnode);
+   evas_textblock_node_format_remove_pair(tb,
+         (Evas_Object_Textblock_Node_Format *) fnode);
+
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   /* Now also remove the b pair */
+   fnode = evas_textblock_node_format_first_get(tb);
+   evas_textblock_node_format_remove_pair(tb,
+         (Evas_Object_Textblock_Node_Format *) fnode);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (fnode);
+
+   /* Now remove formats by removing text */
+   evas_object_textblock_text_markup_set(tb, buf);
+   evas_textblock_cursor_pos_set(cur, 6);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   /* Only b formats should remain */
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   /* No formats should remain. */
+   evas_textblock_cursor_pos_set(cur, 2);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (fnode);
+
+   /* Try to remove the formats in a way that shouldn't remove them */
+   evas_object_textblock_text_markup_set(tb, buf);
+   evas_textblock_cursor_pos_set(cur, 7);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   evas_textblock_cursor_char_delete(cur);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ a"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- a"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   /* Try range deletion to delete a */
+   evas_object_textblock_text_markup_set(tb, buf);
+   evas_textblock_cursor_pos_set(cur, 6);
+   evas_textblock_cursor_pos_set(main_cur, 9);
+   evas_textblock_cursor_range_delete(cur, main_cur);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   /* Range deletion to delete both */
+   evas_object_textblock_text_markup_set(tb, buf);
+   evas_textblock_cursor_pos_set(cur, 2);
+   evas_textblock_cursor_pos_set(main_cur, 11);
+   evas_textblock_cursor_range_delete(cur, main_cur);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (fnode);
+
+   /* Range deletion across paragraphs */
+   evas_object_textblock_text_markup_set(tb,
+         "Th<b>is a<a>te<ps>"
+         "s</a>st</b>.");
+   evas_textblock_cursor_pos_set(cur, 6);
+   evas_textblock_cursor_pos_set(main_cur, 10);
+   evas_textblock_cursor_range_delete(cur, main_cur);
+   fnode = evas_textblock_node_format_first_get(tb);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "+ b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (!fnode);
+   fail_if(strcmp(evas_textblock_node_format_text_get(fnode),
+            "- b"));
+
+   fnode = evas_textblock_node_format_next_get(fnode);
+   fail_if (fnode);
+
+   END_TB_TEST();
+}
+END_TEST
+
 /* Testing items */
 START_TEST(evas_textblock_items)
 {
@@ -1542,6 +1714,7 @@ void evas_test_textblock(TCase *tc)
    tcase_add_test(tc, evas_textblock_evas);
    tcase_add_test(tc, evas_textblock_text_getters);
    tcase_add_test(tc, evas_textblock_formats);
+   tcase_add_test(tc, evas_textblock_format_removal);
    tcase_add_test(tc, evas_textblock_escaping);
    tcase_add_test(tc, evas_textblock_set_get);
    tcase_add_test(tc, evas_textblock_geometries);