/src/test/text_buffer_test.c

http://ftk.googlecode.com/ · C · 78 lines · 61 code · 17 blank · 0 comment · 33 complexity · fd2e565d14f170f9bd81335d3b3ada88 MD5 · raw file

  1. #include "ftk.h"
  2. #include "ftk_text_buffer.h"
  3. void english_test(void)
  4. {
  5. int i = 0;
  6. FtkTextBuffer* thiz = ftk_text_buffer_create(6);
  7. assert(ftk_text_buffer_insert(thiz, 0, "b", -1) == RET_OK);
  8. assert(strcmp(thiz->buffer, "b") == 0);
  9. assert(ftk_text_buffer_insert(thiz, 1, "c", -1) == RET_OK);
  10. assert(strcmp(thiz->buffer, "bc") == 0);
  11. assert(ftk_text_buffer_insert(thiz, 0, "a", -1) == RET_OK);
  12. assert(strcmp(thiz->buffer, "abc") == 0);
  13. assert(ftk_text_buffer_insert(thiz, 4, "a", -1) != RET_OK);
  14. assert(strcmp(thiz->buffer, "abc") == 0);
  15. assert(ftk_text_buffer_insert(thiz, 3, "defg", -1) == RET_OK);
  16. assert(strcmp(thiz->buffer, "abcdefg") == 0);
  17. assert(ftk_text_buffer_delete_chars(thiz, 0, 1) == RET_OK);
  18. assert(strcmp(thiz->buffer, "bcdefg") == 0);
  19. assert(ftk_text_buffer_delete_chars(thiz, 0, 2) == RET_OK);
  20. assert(strcmp(thiz->buffer, "defg") == 0);
  21. assert(ftk_text_buffer_delete_chars(thiz, 1, 2) == RET_OK);
  22. assert(strcmp(thiz->buffer, "dg") == 0);
  23. assert(ftk_text_buffer_delete_chars(thiz, 1, -1) == RET_OK);
  24. assert(strcmp(thiz->buffer, "g") == 0);
  25. assert(ftk_text_buffer_delete_chars(thiz, 1, -1) == RET_OK);
  26. assert(strcmp(thiz->buffer, "") == 0);
  27. ftk_text_buffer_reset(thiz);
  28. assert(thiz->length == 0);
  29. for(i = 0; i < 1000; i++)
  30. {
  31. assert(strcmp(ftk_text_buffer_append_string(thiz, "123"), "123") == 0);
  32. assert(thiz->length == (i+1) * 4);
  33. }
  34. ftk_text_buffer_destroy(thiz);
  35. return;
  36. }
  37. void chinese_test(void)
  38. {
  39. int offset = 0;
  40. FtkTextBuffer* thiz = ftk_text_buffer_create(6);
  41. assert(ftk_text_buffer_insert(thiz, 0, "??????", -1) == RET_OK);
  42. offset = ftk_text_buffer_chars_bytes(thiz, 0, 2);
  43. assert(ftk_text_buffer_delete_chars(thiz, offset, -2) == RET_OK);
  44. assert(strcmp(thiz->buffer, "????") == 0);
  45. assert(ftk_text_buffer_delete_chars(thiz, 0, 2) == RET_OK);
  46. assert(strcmp(thiz->buffer, "??") == 0);
  47. assert(ftk_text_buffer_delete_chars(thiz, 0, 1) == RET_OK);
  48. assert(strcmp(thiz->buffer, "?") == 0);
  49. offset = ftk_text_buffer_chars_bytes(thiz, 0, 1);
  50. assert(ftk_text_buffer_delete_chars(thiz, offset, -1) == RET_OK);
  51. assert(strcmp(thiz->buffer, "") == 0);
  52. ftk_text_buffer_destroy(thiz);
  53. return;
  54. }
  55. int main(int argc, char* argv[])
  56. {
  57. ftk_set_allocator(ftk_allocator_default_create());
  58. english_test();
  59. chinese_test();
  60. return 0;
  61. }