@@ -560,6 +560,35 @@ def test_comparison(self):
560560 range (0 ) >= range (0 )
561561
562562
563+ def test_attributes (self ):
564+ # test the start, stop and step attributes of range objects
565+ self .assert_attrs (range (0 ), 0 , 0 , 1 )
566+ self .assert_attrs (range (10 ), 0 , 10 , 1 )
567+ self .assert_attrs (range (- 10 ), 0 , - 10 , 1 )
568+ self .assert_attrs (range (0 , 10 , 1 ), 0 , 10 , 1 )
569+ self .assert_attrs (range (0 , 10 , 3 ), 0 , 10 , 3 )
570+ self .assert_attrs (range (10 , 0 , - 1 ), 10 , 0 , - 1 )
571+ self .assert_attrs (range (10 , 0 , - 3 ), 10 , 0 , - 3 )
572+
573+ def assert_attrs (self , rangeobj , start , stop , step ):
574+ self .assertEqual (rangeobj .start , start )
575+ self .assertEqual (rangeobj .stop , stop )
576+ self .assertEqual (rangeobj .step , step )
577+
578+ with self .assertRaises (AttributeError ):
579+ rangeobj .start = 0
580+ with self .assertRaises (AttributeError ):
581+ rangeobj .stop = 10
582+ with self .assertRaises (AttributeError ):
583+ rangeobj .step = 1
584+
585+ with self .assertRaises (AttributeError ):
586+ del rangeobj .start
587+ with self .assertRaises (AttributeError ):
588+ del rangeobj .stop
589+ with self .assertRaises (AttributeError ):
590+ del rangeobj .step
591+
563592def test_main ():
564593 test .support .run_unittest (RangeTest )
565594
0 commit comments