2
0

VirtualStackTest.cpp 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. 
  2. #include "../testTools.h"
  3. #include "../../DFPSR/base/virtualStack.h"
  4. START_TEST(VirtualStack)
  5. { // Single threaded
  6. // TODO: Allocate structures with explicit alignment requirements exceeding the largest element's size.
  7. VirtualStackAllocation<int32_t> x(9);
  8. {
  9. ASSERT_EQUAL((uintptr_t)(x.getUnsafe()) % alignof(int32_t), 0);
  10. x[0] = 01;
  11. x[1] = 12;
  12. x[2] = 23;
  13. x[3] = 34;
  14. x[4] = 45;
  15. x[5] = 56;
  16. x[6] = 67;
  17. x[7] = 78;
  18. x[8] = 89;
  19. SafePointer<int32_t> pointerY;
  20. {
  21. VirtualStackAllocation<int32_t> y(3);
  22. pointerY = y;
  23. ASSERT_EQUAL((uintptr_t)(y.getUnsafe()) % alignof(int32_t), 0);
  24. y[0] = 2147483000;
  25. y[1] = -2147483000;
  26. y[2] = 65;
  27. #ifdef SAFE_POINTER_CHECKS
  28. ASSERT_CRASH(y[-1]);
  29. #endif
  30. ASSERT_EQUAL(y[0], 2147483000);
  31. ASSERT_EQUAL(y[1], -2147483000);
  32. ASSERT_EQUAL(y[2], 65);
  33. #ifdef SAFE_POINTER_CHECKS
  34. ASSERT_CRASH(y[3]);
  35. #endif
  36. }
  37. #ifdef SAFE_POINTER_CHECKS
  38. ASSERT_CRASH(pointerY[0]);
  39. #endif
  40. }
  41. #ifdef SAFE_POINTER_CHECKS
  42. ASSERT_CRASH(x[-1]);
  43. #endif
  44. ASSERT_EQUAL(x[0], 01);
  45. ASSERT_EQUAL(x[1], 12);
  46. ASSERT_EQUAL(x[2], 23);
  47. ASSERT_EQUAL(x[3], 34);
  48. ASSERT_EQUAL(x[4], 45);
  49. ASSERT_EQUAL(x[5], 56);
  50. ASSERT_EQUAL(x[6], 67);
  51. ASSERT_EQUAL(x[7], 78);
  52. ASSERT_EQUAL(x[8], 89);
  53. #ifdef SAFE_POINTER_CHECKS
  54. ASSERT_CRASH(x[9]);
  55. #endif
  56. }
  57. { // Multi threaded
  58. // TODO: Create a bruteforce test using multiple threads.
  59. }
  60. END_TEST