@@ -206,6 +206,37 @@ class RGBConversionTestCase(BaseColorConversionTest):
206206 def setUp (self ):
207207 self .color = sRGBColor (0.482 , 0.784 , 0.196 )
208208
209+ def test_channel_clamping (self ):
210+ high_r = sRGBColor (1.482 , 0.2 , 0.3 )
211+ self .assertEqual (high_r .clamped_rgb_r , 1.0 )
212+ self .assertEqual (high_r .clamped_rgb_g , high_r .rgb_g )
213+ self .assertEqual (high_r .clamped_rgb_b , high_r .rgb_b )
214+
215+ low_r = sRGBColor (- 0.1 , 0.2 , 0.3 )
216+ self .assertEqual (low_r .clamped_rgb_r , 0.0 )
217+ self .assertEqual (low_r .clamped_rgb_g , low_r .rgb_g )
218+ self .assertEqual (low_r .clamped_rgb_b , low_r .rgb_b )
219+
220+ high_g = sRGBColor (0.2 , 1.482 , 0.3 )
221+ self .assertEqual (high_g .clamped_rgb_r , high_g .rgb_r )
222+ self .assertEqual (high_g .clamped_rgb_g , 1.0 )
223+ self .assertEqual (high_g .clamped_rgb_b , high_g .rgb_b )
224+
225+ low_g = sRGBColor (0.2 , - 0.1 , 0.3 )
226+ self .assertEqual (low_g .clamped_rgb_r , low_g .rgb_r )
227+ self .assertEqual (low_g .clamped_rgb_g , 0.0 )
228+ self .assertEqual (low_g .clamped_rgb_b , low_g .rgb_b )
229+
230+ high_b = sRGBColor (0.1 , 0.2 , 1.482 )
231+ self .assertEqual (high_b .clamped_rgb_r , high_b .rgb_r )
232+ self .assertEqual (high_b .clamped_rgb_g , high_b .rgb_g )
233+ self .assertEqual (high_b .clamped_rgb_b , 1.0 )
234+
235+ low_b = sRGBColor (0.1 , 0.2 , - 0.1 )
236+ self .assertEqual (low_b .clamped_rgb_r , low_b .rgb_r )
237+ self .assertEqual (low_b .clamped_rgb_g , low_b .rgb_g )
238+ self .assertEqual (low_b .clamped_rgb_b , 0.0 )
239+
209240 def test_to_xyz_and_back (self ):
210241 xyz = convert_color (self .color , XYZColor )
211242 rgb = convert_color (xyz , sRGBColor )
0 commit comments