Open Source Tomb Raider Engine
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

memory_test.cpp 3.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. /*!
  2. * \file test/memory_test.cpp
  3. * Memory testing Toolkit Unit test
  4. *
  5. * \author Mongoose
  6. * \author xythobuz
  7. */
  8. #include <string.h>
  9. #include <stdio.h>
  10. #include <stdlib.h>
  11. #include "greatest.h"
  12. #include <memory_test.h>
  13. extern rbtree_t *MEMORY_INFO;
  14. bool check_red_black_tree(rbtree_t *current, bool valid, bool strict);
  15. TEST singleInteger() {
  16. int *i = new int;
  17. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  18. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), sizeof(int));
  19. delete i;
  20. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  21. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  22. PASS();
  23. }
  24. TEST arrayInteger() {
  25. int *i = new int[3];
  26. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  27. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 3 * sizeof(int));
  28. delete [] i;
  29. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  30. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  31. PASS();
  32. }
  33. TEST arrayCombinedInteger() {
  34. int *i = new int[3];
  35. int *j = new int;
  36. int *k = new int[3];
  37. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  38. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 7 * sizeof(int));
  39. delete [] i;
  40. delete j;
  41. delete [] k;
  42. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  43. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  44. PASS();
  45. }
  46. SUITE(integerSuite) {
  47. RUN_TEST(singleInteger);
  48. RUN_TEST(arrayInteger);
  49. RUN_TEST(arrayCombinedInteger);
  50. }
  51. TEST singleFloat() {
  52. float *i = new float;
  53. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  54. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), sizeof(float));
  55. delete i;
  56. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  57. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  58. PASS();
  59. }
  60. TEST arrayFloat() {
  61. float *i = new float[3];
  62. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  63. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 3 * sizeof(float));
  64. delete [] i;
  65. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  66. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  67. PASS();
  68. }
  69. TEST arrayCombinedFloat() {
  70. float *i = new float[3];
  71. float *j = new float;
  72. float *k = new float[3];
  73. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  74. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 7 * sizeof(float));
  75. delete [] i;
  76. delete j;
  77. delete [] k;
  78. ASSERTm("No valid red-black tree!", check_red_black_tree(MEMORY_INFO, true, true));
  79. ASSERT_EQm("Memory-Tracking faulty!", memory_used(MEMORY_USED_BY_PROGRAM), 0);
  80. PASS();
  81. }
  82. SUITE(floatSuite) {
  83. RUN_TEST(singleFloat);
  84. RUN_TEST(arrayFloat);
  85. RUN_TEST(arrayCombinedFloat);
  86. }
  87. GREATEST_MAIN_DEFS();
  88. int main(int argc, char *argv[]) {
  89. GREATEST_MAIN_BEGIN();
  90. RUN_SUITE(integerSuite);
  91. RUN_SUITE(floatSuite);
  92. GREATEST_MAIN_END();
  93. }