11import numpy as np
2+ import pytest
23
34from app .operators .blurring .blur import Blur
45from app .operators .blurring .gaussian_blur import GaussianBlur
@@ -56,11 +57,10 @@ def test_custom_params_output_shape(self, color_image):
5657 result = GaussianBlur ({"widthSize" : 5 , "heightSize" : 5 }).compute (color_image )
5758 assert result .shape == color_image .shape
5859
59- def test_even_kernel_corrected_to_odd (self , color_image ):
60- result_even = GaussianBlur ({"widthSize" : 4 , "heightSize" : 4 }).compute (color_image )
61- result_odd = GaussianBlur ({"widthSize" : 5 , "heightSize" : 5 }).compute (color_image )
62- assert result_even .shape == color_image .shape
63- np .testing .assert_array_equal (result_even , result_odd )
60+ def test_even_kernel_raises_value_error (self , color_image ):
61+ # Validator rejects even kernels with a "Did you mean 3 or 5?" message.
62+ with pytest .raises (ValueError , match = "odd" ):
63+ GaussianBlur ({"widthSize" : 4 , "heightSize" : 4 }).compute (color_image )
6464
6565 def test_grayscale_input (self , grayscale_image ):
6666 result = GaussianBlur ({}).compute (grayscale_image )
@@ -102,11 +102,10 @@ def test_custom_params_output_shape(self, color_image):
102102 result = MedianBlur ({"kernelSize" : 5 }).compute (color_image )
103103 assert result .shape == color_image .shape
104104
105- def test_even_kernel_corrected_to_odd (self , color_image ):
106- result_even = MedianBlur ({"kernelSize" : 4 }).compute (color_image )
107- result_odd = MedianBlur ({"kernelSize" : 5 }).compute (color_image )
108- assert result_even .shape == color_image .shape
109- np .testing .assert_array_equal (result_even , result_odd )
105+ def test_even_kernel_raises_value_error (self , color_image ):
106+ # Validator rejects even kernels with a "Did you mean 3 or 5?" message.
107+ with pytest .raises (ValueError , match = "odd" ):
108+ MedianBlur ({"kernelSize" : 4 }).compute (color_image )
110109
111110 def test_grayscale_input (self , grayscale_image ):
112111 result = MedianBlur ({}).compute (grayscale_image )
@@ -129,9 +128,11 @@ def test_median_blur_removes_salt_pepper_noise(self):
129128 np .abs (result .astype (int ) - clean .astype (int )).mean () < np .abs (noisy .astype (int ) - clean .astype (int )).mean ()
130129 )
131130
132- def test_kernel_size_1_is_identity (self , color_image ):
133- result = MedianBlur ({"kernelSize" : 1 }).compute (color_image )
134- np .testing .assert_array_equal (result , color_image )
131+ def test_kernel_size_1_rejected (self , color_image ):
132+ # MedianBlur's validator deliberately forbids ksize=1 (a no-op) even though
133+ # OpenCV would accept it. See app/operators/blurring/validation.py.
134+ with pytest .raises (ValueError , match = ">= 3" ):
135+ MedianBlur ({"kernelSize" : 1 }).compute (color_image )
135136
136137 def test_small_image_no_crash (self ):
137138 img = np .zeros ((3 , 3 , 3 ), dtype = np .uint8 )
0 commit comments