check-qstring.c 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. /*
  2. * QString unit-tests.
  3. *
  4. * Copyright (C) 2009 Red Hat Inc.
  5. *
  6. * Authors:
  7. * Luiz Capitulino <lcapitulino@redhat.com>
  8. *
  9. * This work is licensed under the terms of the GNU LGPL, version 2.1 or later.
  10. * See the COPYING.LIB file in the top-level directory.
  11. */
  12. #include <check.h>
  13. #include "qstring.h"
  14. #include "qemu-common.h"
  15. /*
  16. * Public Interface test-cases
  17. *
  18. * (with some violations to access 'private' data)
  19. */
  20. START_TEST(qstring_from_str_test)
  21. {
  22. QString *qstring;
  23. const char *str = "QEMU";
  24. qstring = qstring_from_str(str);
  25. fail_unless(qstring != NULL);
  26. fail_unless(qstring->base.refcnt == 1);
  27. fail_unless(strcmp(str, qstring->string) == 0);
  28. fail_unless(qobject_type(QOBJECT(qstring)) == QTYPE_QSTRING);
  29. // destroy doesn't exit yet
  30. qemu_free(qstring->string);
  31. qemu_free(qstring);
  32. }
  33. END_TEST
  34. START_TEST(qstring_destroy_test)
  35. {
  36. QString *qstring = qstring_from_str("destroy test");
  37. QDECREF(qstring);
  38. }
  39. END_TEST
  40. START_TEST(qstring_get_str_test)
  41. {
  42. QString *qstring;
  43. const char *ret_str;
  44. const char *str = "QEMU/KVM";
  45. qstring = qstring_from_str(str);
  46. ret_str = qstring_get_str(qstring);
  47. fail_unless(strcmp(ret_str, str) == 0);
  48. QDECREF(qstring);
  49. }
  50. END_TEST
  51. START_TEST(qstring_append_chr_test)
  52. {
  53. int i;
  54. QString *qstring;
  55. const char *str = "qstring append char unit-test";
  56. qstring = qstring_new();
  57. for (i = 0; str[i]; i++)
  58. qstring_append_chr(qstring, str[i]);
  59. fail_unless(strcmp(str, qstring_get_str(qstring)) == 0);
  60. QDECREF(qstring);
  61. }
  62. END_TEST
  63. START_TEST(qstring_from_substr_test)
  64. {
  65. QString *qs;
  66. qs = qstring_from_substr("virtualization", 3, 9);
  67. fail_unless(qs != NULL);
  68. fail_unless(strcmp(qstring_get_str(qs), "tualiza") == 0);
  69. QDECREF(qs);
  70. }
  71. END_TEST
  72. START_TEST(qobject_to_qstring_test)
  73. {
  74. QString *qstring;
  75. qstring = qstring_from_str("foo");
  76. fail_unless(qobject_to_qstring(QOBJECT(qstring)) == qstring);
  77. QDECREF(qstring);
  78. }
  79. END_TEST
  80. static Suite *qstring_suite(void)
  81. {
  82. Suite *s;
  83. TCase *qstring_public_tcase;
  84. s = suite_create("QString test-suite");
  85. qstring_public_tcase = tcase_create("Public Interface");
  86. suite_add_tcase(s, qstring_public_tcase);
  87. tcase_add_test(qstring_public_tcase, qstring_from_str_test);
  88. tcase_add_test(qstring_public_tcase, qstring_destroy_test);
  89. tcase_add_test(qstring_public_tcase, qstring_get_str_test);
  90. tcase_add_test(qstring_public_tcase, qstring_append_chr_test);
  91. tcase_add_test(qstring_public_tcase, qstring_from_substr_test);
  92. tcase_add_test(qstring_public_tcase, qobject_to_qstring_test);
  93. return s;
  94. }
  95. int main(void)
  96. {
  97. int nf;
  98. Suite *s;
  99. SRunner *sr;
  100. s = qstring_suite();
  101. sr = srunner_create(s);
  102. srunner_run_all(sr, CK_NORMAL);
  103. nf = srunner_ntests_failed(sr);
  104. srunner_free(sr);
  105. return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
  106. }