@@ -644,3 +644,59 @@ def test_forward(self, padding, pad_if_needed, fill, padding_mode, mocker):
644644 else :
645645 # vfdev-5: I do not know how to mock and test this case
646646 pass
647+
648+
649+ class TestGaussianBlur :
650+ def test_assertions (self ):
651+ with pytest .raises (ValueError , match = "Kernel size should be a tuple/list of two integers" ):
652+ transforms .GaussianBlur ([10 , 12 , 14 ])
653+
654+ with pytest .raises (ValueError , match = "Kernel size value should be an odd and positive number" ):
655+ transforms .GaussianBlur (4 )
656+
657+ with pytest .raises (TypeError , match = "sigma should be a single float or a list/tuple with length 2" ):
658+ transforms .GaussianBlur (3 , sigma = [1 , 2 , 3 ])
659+
660+ with pytest .raises (ValueError , match = "If sigma is a single number, it must be positive" ):
661+ transforms .GaussianBlur (3 , sigma = - 1.0 )
662+
663+ with pytest .raises (ValueError , match = "sigma values should be positive and of the form" ):
664+ transforms .GaussianBlur (3 , sigma = [2.0 , 1.0 ])
665+
666+ @pytest .mark .parametrize ("sigma" , [10.0 , [10.0 , 12.0 ]])
667+ def test__get_params (self , sigma ):
668+ transform = transforms .GaussianBlur (3 , sigma = sigma )
669+ params = transform ._get_params (None )
670+
671+ if isinstance (sigma , float ):
672+ assert params ["sigma" ][0 ] == params ["sigma" ][1 ] == 10
673+ else :
674+ assert sigma [0 ] <= params ["sigma" ][0 ] <= sigma [1 ]
675+ assert sigma [0 ] <= params ["sigma" ][1 ] <= sigma [1 ]
676+
677+ @pytest .mark .parametrize ("kernel_size" , [3 , [3 , 5 ], (5 , 3 )])
678+ @pytest .mark .parametrize ("sigma" , [2.0 , [2.0 , 3.0 ]])
679+ def test__transform (self , kernel_size , sigma , mocker ):
680+ transform = transforms .GaussianBlur (kernel_size = kernel_size , sigma = sigma )
681+
682+ if isinstance (kernel_size , (tuple , list )):
683+ assert transform .kernel_size == kernel_size
684+ else :
685+ assert transform .kernel_size == (kernel_size , kernel_size )
686+
687+ if isinstance (sigma , (tuple , list )):
688+ assert transform .sigma == sigma
689+ else :
690+ assert transform .sigma == (sigma , sigma )
691+
692+
693+ fn = mocker .patch ("torchvision.prototype.transforms.functional.gaussian_blur" )
694+ inpt = features .Image (torch .rand (1 , 3 , 32 , 32 ))
695+ # vfdev-5, Feature Request: let's store params as Transform attribute
696+ # This could be also helpful for users
697+ torch .manual_seed (12 )
698+ _ = transform (inpt )
699+ torch .manual_seed (12 )
700+ params = transform ._get_params (inpt )
701+
702+ fn .assert_called_once_with (inpt , ** params )
0 commit comments