ImageTest.cpp 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. 
  2. #include "../testTools.h"
  3. #include "../../DFPSR/api/imageAPI.h"
  4. START_TEST(Image)
  5. { // ImageU8
  6. ImageU8 imageA;
  7. ASSERT_EQUAL(image_exists(imageA), false);
  8. imageA = image_create_U8(17, 9);
  9. ASSERT_EQUAL(image_exists(imageA), true);
  10. ASSERT_EQUAL(image_useCount(imageA), 1);
  11. ASSERT_EQUAL(image_getWidth(imageA), 17);
  12. ASSERT_EQUAL(image_getHeight(imageA), 9);
  13. ASSERT_EQUAL(image_getStride(imageA), heap_getHeapAlignment());
  14. ASSERT_EQUAL(image_getBound(imageA), IRect(0, 0, 17, 9));
  15. ImageU8 imageB; // Create empty image reference
  16. ASSERT_EQUAL(image_useCount(imageA), 1);
  17. ASSERT_EQUAL(image_useCount(imageB), 0);
  18. imageB = imageA; // Shallow copy of reference
  19. ASSERT_EQUAL(image_useCount(imageA), 2);
  20. ASSERT_EQUAL(image_useCount(imageB), 2);
  21. imageA = ImageU8(); // Remove original reference to the image
  22. ASSERT_EQUAL(image_useCount(imageA), 0);
  23. ASSERT_EQUAL(image_useCount(imageB), 1);
  24. }
  25. { // ImageF32
  26. ImageF32 image;
  27. ASSERT_EQUAL(image_exists(image), false);
  28. image = image_create_F32(3, 48);
  29. ASSERT_EQUAL(image_exists(image), true);
  30. ASSERT_EQUAL(image_useCount(image), 1);
  31. ASSERT_EQUAL(image_getWidth(image), 3);
  32. ASSERT_EQUAL(image_getHeight(image), 48);
  33. ASSERT_EQUAL(image_getStride(image), heap_getHeapAlignment());
  34. ASSERT_EQUAL(image_getBound(image), IRect(0, 0, 3, 48));
  35. }
  36. { // ImageRgbaU8
  37. ImageRgbaU8 image;
  38. ASSERT_EQUAL(image_exists(image), false);
  39. image = image_create_RgbaU8(52, 12);
  40. ASSERT_EQUAL(image_exists(image), true);
  41. ASSERT_EQUAL(image_useCount(image), 1);
  42. ASSERT_EQUAL(image_getWidth(image), 52);
  43. ASSERT_EQUAL(image_getHeight(image), 12);
  44. ASSERT_EQUAL(image_getBound(image), IRect(0, 0, 52, 12));
  45. }
  46. { // Sub-images
  47. ImageU8 parentImage = image_fromAscii(
  48. "< .x>"
  49. "< .. .. >"
  50. "<..x..x..>"
  51. "<.xx..xx.>"
  52. "< ..xx.. >"
  53. "< ..xx.. >"
  54. "<.xx..xx.>"
  55. "<..x..x..>"
  56. "< .. .. >"
  57. );
  58. ImageU8 upperLeftSubImage = image_getSubImage(parentImage, IRect(0, 0, 4, 4));
  59. ImageU8 upperRightSubImage = image_getSubImage(parentImage, IRect(4, 0, 4, 4));
  60. ImageU8 lowerLeftSubImage = image_getSubImage(parentImage, IRect(0, 4, 4, 4));
  61. ImageU8 lowerRightSubImage = image_getSubImage(parentImage, IRect(4, 4, 4, 4));
  62. ImageU8 centerSubImage = image_getSubImage(parentImage, IRect(2, 2, 4, 4));
  63. ASSERT_EQUAL(image_maxDifference(upperLeftSubImage, image_fromAscii(
  64. "< .x>"
  65. "< .. >"
  66. "<..x.>"
  67. "<.xx.>"
  68. "< ..x>"
  69. )), 0);
  70. ASSERT_EQUAL(image_maxDifference(upperRightSubImage, image_fromAscii(
  71. "< .x>"
  72. "< .. >"
  73. "<.x..>"
  74. "<.xx.>"
  75. "<x.. >"
  76. )), 0);
  77. ASSERT_EQUAL(image_maxDifference(lowerLeftSubImage, image_fromAscii(
  78. "< .x>"
  79. "< ..x>"
  80. "<.xx.>"
  81. "<..x.>"
  82. "< .. >"
  83. )), 0);
  84. ASSERT_EQUAL(image_maxDifference(lowerRightSubImage, image_fromAscii(
  85. "< .x>"
  86. "<x.. >"
  87. "<.xx.>"
  88. "<.x..>"
  89. "< .. >"
  90. )), 0);
  91. ASSERT_EQUAL(image_maxDifference(centerSubImage, image_fromAscii(
  92. "< .x>"
  93. "<x..x>"
  94. "<.xx.>"
  95. "<.xx.>"
  96. "<x..x>"
  97. )), 0);
  98. image_fill(centerSubImage, 0);
  99. ASSERT_EQUAL(image_maxDifference(parentImage, image_fromAscii(
  100. "< .x>"
  101. "< .. .. >"
  102. "<..x..x..>"
  103. "<.x x.>"
  104. "< . . >"
  105. "< . . >"
  106. "<.x x.>"
  107. "<..x..x..>"
  108. "< .. .. >"
  109. )), 0);
  110. }
  111. END_TEST