@@ -62,6 +62,33 @@ def test_name_cleanup(self):
6262 'tzinfo' ])
6363 self .assertEqual (names - allowed , set ([]))
6464
65+ def test_divide_and_round (self ):
66+ if '_Fast' in str (self ):
67+ return
68+ dar = datetime_module ._divide_and_round
69+
70+ self .assertEqual (dar (- 10 , - 3 ), 3 )
71+ self .assertEqual (dar (5 , - 2 ), - 2 )
72+
73+ # four cases: (2 signs of a) x (2 signs of b)
74+ self .assertEqual (dar (7 , 3 ), 2 )
75+ self .assertEqual (dar (- 7 , 3 ), - 2 )
76+ self .assertEqual (dar (7 , - 3 ), - 2 )
77+ self .assertEqual (dar (- 7 , - 3 ), 2 )
78+
79+ # ties to even - eight cases:
80+ # (2 signs of a) x (2 signs of b) x (even / odd quotient)
81+ self .assertEqual (dar (10 , 4 ), 2 )
82+ self .assertEqual (dar (- 10 , 4 ), - 2 )
83+ self .assertEqual (dar (10 , - 4 ), - 2 )
84+ self .assertEqual (dar (- 10 , - 4 ), 2 )
85+
86+ self .assertEqual (dar (6 , 4 ), 2 )
87+ self .assertEqual (dar (- 6 , 4 ), - 2 )
88+ self .assertEqual (dar (6 , - 4 ), - 2 )
89+ self .assertEqual (dar (- 6 , - 4 ), 2 )
90+
91+
6592#############################################################################
6693# tzinfo tests
6794
@@ -394,6 +421,10 @@ def test_computations(self):
394421 eq ((- 3 * us ) * 0.5 , - 2 * us )
395422 eq ((- 5 * us ) * 0.5 , - 2 * us )
396423
424+ # Issue #23521
425+ eq (td (seconds = 1 ) * 0.123456 , td (microseconds = 123456 ))
426+ eq (td (seconds = 1 ) * 0.6112295 , td (microseconds = 611229 ))
427+
397428 # Division by int and float
398429 eq ((3 * us ) / 2 , 2 * us )
399430 eq ((5 * us ) / 2 , 2 * us )
@@ -408,6 +439,9 @@ def test_computations(self):
408439 for i in range (- 10 , 10 ):
409440 eq ((i * us / - 3 )// us , round (i / - 3 ))
410441
442+ # Issue #23521
443+ eq (td (seconds = 1 ) / (1 / 0.6112295 ), td (microseconds = 611229 ))
444+
411445 # Issue #11576
412446 eq (td (999999999 , 86399 , 999999 ) - td (999999999 , 86399 , 999998 ),
413447 td (0 , 0 , 1 ))
0 commit comments