File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -136,11 +136,23 @@ def test_rankfilter_error(filter: ImageFilter.RankFilter) -> None:
136136
137137
138138def test_rankfilter_properties () -> None :
139- rankfilter = ImageFilter .RankFilter (1 , 2 )
139+ rankfilter = ImageFilter .RankFilter (3 , 2 )
140140
141- assert rankfilter .size == 1
141+ assert rankfilter .size == 3
142142 assert rankfilter .rank == 2
143143
144+ with pytest .raises (ValueError , match = "bad filter size" ):
145+ ImageFilter .RankFilter (2 , 1 )
146+ with pytest .raises (ValueError , match = "bad filter size" ):
147+ ImageFilter .MaxFilter (2 )
148+ with pytest .raises (ValueError , match = "bad filter size" ):
149+ ImageFilter .MedianFilter (2 )
150+ with pytest .raises (ValueError , match = "bad filter size" ):
151+ ImageFilter .MinFilter (2 )
152+
153+ with pytest .raises (ValueError , match = "bad rank value" ):
154+ ImageFilter .RankFilter (1 , 1 )
155+
144156
145157def test_builtinfilter_p () -> None :
146158 builtin_filter = ImageFilter .BuiltinFilter ()
Original file line number Diff line number Diff line change @@ -99,6 +99,12 @@ class RankFilter(Filter):
9999 name = "Rank"
100100
101101 def __init__ (self , size : int , rank : int ) -> None :
102+ if size % 2 == 0 :
103+ msg = "bad filter size"
104+ raise ValueError (msg )
105+ if rank < 0 or rank >= size * size :
106+ msg = "bad rank value"
107+ raise ValueError (msg )
102108 self .size = size
103109 self .rank = rank
104110
@@ -121,8 +127,8 @@ class MedianFilter(RankFilter):
121127 name = "Median"
122128
123129 def __init__ (self , size : int = 3 ) -> None :
124- self . size = size
125- self . rank = size * size // 2
130+ rank = size * size // 2
131+ super (). __init__ ( size , rank )
126132
127133
128134class MinFilter (RankFilter ):
@@ -136,8 +142,8 @@ class MinFilter(RankFilter):
136142 name = "Min"
137143
138144 def __init__ (self , size : int = 3 ) -> None :
139- self . size = size
140- self . rank = 0
145+ rank = 0
146+ super (). __init__ ( size , rank )
141147
142148
143149class MaxFilter (RankFilter ):
@@ -151,8 +157,8 @@ class MaxFilter(RankFilter):
151157 name = "Max"
152158
153159 def __init__ (self , size : int = 3 ) -> None :
154- self . size = size
155- self . rank = size * size - 1
160+ rank = size * size - 1
161+ super (). __init__ ( size , rank )
156162
157163
158164class ModeFilter (Filter ):
You can’t perform that action at this time.
0 commit comments