@@ -243,3 +243,56 @@ def test_features_bounding_box(self, p):
243
243
assert_equal (expected , actual )
244
244
assert actual .format == expected .format
245
245
assert actual .image_size == expected .image_size
246
+
247
+
248
+ @pytest .mark .parametrize ("p" , [0.0 , 1.0 ])
249
+ class TestRandomVerticalFlip :
250
+ def input_expected_image_tensor (self , p , dtype = torch .float32 ):
251
+ input = torch .tensor ([[[1 , 1 ], [0 , 0 ]], [[1 , 1 ], [0 , 0 ]]], dtype = dtype )
252
+ expected = torch .tensor ([[[0 , 0 ], [1 , 1 ]], [[0 , 0 ], [1 , 1 ]]], dtype = dtype )
253
+
254
+ return input , expected if p == 1 else input
255
+
256
+ def test_simple_tensor (self , p ):
257
+ input , expected = self .input_expected_image_tensor (p )
258
+ transform = transforms .RandomVerticalFlip (p = p )
259
+
260
+ actual = transform (input )
261
+
262
+ assert_equal (expected , actual )
263
+
264
+ def test_pil_image (self , p ):
265
+ input , expected = self .input_expected_image_tensor (p , dtype = torch .uint8 )
266
+ transform = transforms .RandomVerticalFlip (p = p )
267
+
268
+ actual = transform (to_pil_image (input ))
269
+
270
+ assert_equal (expected , pil_to_tensor (actual ))
271
+
272
+ def test_features_image (self , p ):
273
+ input , expected = self .input_expected_image_tensor (p )
274
+ transform = transforms .RandomVerticalFlip (p = p )
275
+
276
+ actual = transform (features .Image (input ))
277
+
278
+ assert_equal (features .Image (expected ), actual )
279
+
280
+ def test_features_segmentation_mask (self , p ):
281
+ input , expected = self .input_expected_image_tensor (p )
282
+ transform = transforms .RandomVerticalFlip (p = p )
283
+
284
+ actual = transform (features .SegmentationMask (input ))
285
+
286
+ assert_equal (features .SegmentationMask (expected ), actual )
287
+
288
+ def test_features_bounding_box (self , p ):
289
+ input = features .BoundingBox ([0 , 0 , 5 , 5 ], format = features .BoundingBoxFormat .XYXY , image_size = (10 , 10 ))
290
+ transform = transforms .RandomVerticalFlip (p = p )
291
+
292
+ actual = transform (input )
293
+
294
+ expected_image_tensor = torch .tensor ([0 , 5 , 5 , 10 ]) if p == 1.0 else input
295
+ expected = features .BoundingBox .new_like (input , data = expected_image_tensor )
296
+ assert_equal (expected , actual )
297
+ assert actual .format == expected .format
298
+ assert actual .image_size == expected .image_size
0 commit comments