ImageTest.cpp 3.3 KB

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