Browse Source

Regression testing image reference count.

David Piuva 5 years ago
parent
commit
3d3d9e3187
1 changed files with 20 additions and 8 deletions
  1. 20 8
      Source/test/tests/ImageTest.cpp

+ 20 - 8
Source/test/tests/ImageTest.cpp

@@ -3,20 +3,31 @@
 
 START_TEST(Image)
 	{ // ImageU8
-		ImageU8 image;
-		ASSERT_EQUAL(image_exists(image), false);
-		image = image_create_U8(17, 9);
-		ASSERT_EQUAL(image_exists(image), true);
-		ASSERT_EQUAL(image_getWidth(image), 17);
-		ASSERT_EQUAL(image_getHeight(image), 9);
-		ASSERT_EQUAL(image_getStride(image), 32);
-		ASSERT_EQUAL(image_getBound(image), IRect(0, 0, 17, 9));
+		ImageU8 imageA;
+		ASSERT_EQUAL(image_exists(imageA), false);
+		imageA = image_create_U8(17, 9);
+		ASSERT_EQUAL(image_exists(imageA), true);
+		ASSERT_EQUAL(image_useCount(imageA), 1);
+		ASSERT_EQUAL(image_getWidth(imageA), 17);
+		ASSERT_EQUAL(image_getHeight(imageA), 9);
+		ASSERT_EQUAL(image_getStride(imageA), 32);
+		ASSERT_EQUAL(image_getBound(imageA), IRect(0, 0, 17, 9));
+		ImageU8 imageB; // Create empty image reference
+		ASSERT_EQUAL(image_useCount(imageA), 1);
+		ASSERT_EQUAL(image_useCount(imageB), 0);
+		imageB = imageA; // Shallow copy of reference
+		ASSERT_EQUAL(image_useCount(imageA), 2);
+		ASSERT_EQUAL(image_useCount(imageB), 2);
+		imageA = ImageU8(); // Remove original reference to the image
+		ASSERT_EQUAL(image_useCount(imageA), 0);
+		ASSERT_EQUAL(image_useCount(imageB), 1);
 	}
 	{ // ImageF32
 		ImageF32 image;
 		ASSERT_EQUAL(image_exists(image), false);
 		image = image_create_F32(3, 48);
 		ASSERT_EQUAL(image_exists(image), true);
+		ASSERT_EQUAL(image_useCount(image), 1);
 		ASSERT_EQUAL(image_getWidth(image), 3);
 		ASSERT_EQUAL(image_getHeight(image), 48);
 		ASSERT_EQUAL(image_getStride(image), 16);
@@ -27,6 +38,7 @@ START_TEST(Image)
 		ASSERT_EQUAL(image_exists(image), false);
 		image = image_create_RgbaU8(52, 12);
 		ASSERT_EQUAL(image_exists(image), true);
+		ASSERT_EQUAL(image_useCount(image), 1);
 		ASSERT_EQUAL(image_getWidth(image), 52);
 		ASSERT_EQUAL(image_getHeight(image), 12);
 		ASSERT_EQUAL(image_getStride(image), 208);