<s> import sys <EOL> import random <EOL> import itertools <EOL> import unittest <EOL> from sre_yield . fastdivmod import divmod_iter_chunking , divmod_iter_basic , powersum <EOL> class FastDivmodTest ( unittest . TestCase ) : <EOL> def test_divmod_iter_basic ( self ) : <EOL> v = divmod_iter_basic ( <NUM_LIT> , <NUM_LIT:10> ) <EOL> self . assertEqual ( [ <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] , list ( v ) ) <EOL> def test_basics ( self ) : <EOL> v = divmod_iter_chunking ( <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:10> ) <EOL> self . assertEqual ( [ <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] , list ( v ) ) <EOL> v = divmod_iter_chunking ( <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:100> ) <EOL> self . assertEqual ( [ <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] , list ( v ) ) <EOL> v = divmod_iter_chunking ( <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:1000> ) <EOL> self . assertEqual ( [ <NUM_LIT:4> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:1> ] , list ( v ) ) <EOL> def test_bad_chunk_sizes ( self ) : <EOL> g = divmod_iter_chunking ( <NUM_LIT> , <NUM_LIT:10> , <NUM_LIT:11> ) <EOL> self . assertRaises ( ValueError , g . __next__ ) <EOL> def test_huge_number_1 ( self ) : <EOL> v = divmod_iter_chunking ( <NUM_LIT> , <NUM_LIT:255> ) <EOL> self . assertEqual ( [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , list ( v ) ) <EOL> def test_huge_number_2 ( self ) : <EOL> bignum = <NUM_LIT> <EOL> assert <NUM_LIT:255> ** <NUM_LIT:11> > bignum <EOL> v = divmod_iter_chunking ( bignum , <NUM_LIT:255> , <NUM_LIT:255> ** <NUM_LIT:11> ) <EOL> self . assertEqual ( [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , list ( map ( int , v ) ) ) <EOL> assert <NUM_LIT:255> ** <NUM_LIT:9> < bignum <EOL> v = divmod_iter_chunking ( bignum , <NUM_LIT:255> , <NUM_LIT:255> ** <NUM_LIT:9> ) <EOL> self . assertEqual ( [ <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> ] , list ( map ( int , v ) ) ) <EOL> def test_huge_number_3 ( self ) : <EOL> bignum = '''<STR_LIT>''' . replace ( '<STR_LIT:U+0020>' , '<STR_LIT>' ) . replace ( '<STR_LIT:\n>' , '<STR_LIT>' ) <EOL> bignum = int ( bignum ) <EOL> bignum2 = <NUM_LIT> <EOL> v = divmod_iter_chunking ( bignum , bignum2 ) <EOL> next ( v ) <EOL> next ( v ) <EOL> next ( v ) <EOL> for i in v : <EOL> pass <EOL> def test_correctness_big_numbers ( ) : <EOL> random . seed ( <NUM_LIT:1> ) <EOL> for _ in range ( <NUM_LIT:100> ) : <EOL> x = random . randint ( <NUM_LIT:1> , <NUM_LIT:2> ** <NUM_LIT:32> ) <EOL> for base in ( <NUM_LIT:2> , <NUM_LIT:10> , <NUM_LIT:255> , <NUM_LIT> ) : <EOL> for chunk in ( base , base ** <NUM_LIT:2> , base ** <NUM_LIT:3> , base ** <NUM_LIT:4> ) : <EOL> yield runner , x , base , chunk <EOL> for _ in range ( <NUM_LIT:10> ) : <EOL> x = random . randint ( <NUM_LIT:1> , <NUM_LIT:2> ** <NUM_LIT:32> ) * sys . maxsize ** <NUM_LIT:6> <EOL> for base in ( <NUM_LIT:2> , <NUM_LIT:10> , <NUM_LIT:255> , <NUM_LIT> ) : <EOL> for chunk in ( base , base ** <NUM_LIT:2> , base ** <NUM_LIT:3> , base ** <NUM_LIT:4> ) : <EOL> yield runner , x , base , chunk <EOL> def runner ( x , base , chunk ) : <EOL> for i , j in itertools . zip_longest ( divmod_iter_chunking ( x , base , chunk ) , divmod_iter_basic ( x , base ) ) : <EOL> if i is None : <EOL> print ( "<STR_LIT>" ) <EOL> else : <EOL> assert i == j <EOL> def test_powersum ( ) : <EOL> for base in ( <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:7> , <NUM_LIT> ) : <EOL> yield powersum_runner , base , <NUM_LIT:0> , <NUM_LIT:0> <EOL> yield powersum_runner , base , <NUM_LIT:0> , <NUM_LIT:1> <EOL> yield powersum_runner , base , <NUM_LIT:1> , <NUM_LIT:2> <EOL> yield powersum_runner , base , <NUM_LIT:1> , <NUM_LIT:10> <EOL> yield powersum_runner , base , <NUM_LIT> , <NUM_LIT> <EOL> yield powersum_runner , base , <NUM_LIT:1> , <NUM_LIT:2> ** <NUM_LIT> <EOL> def powersum_runner ( base , low , high ) : <EOL> expected = sum ( [ base ** i for i in range ( low , high + <NUM_LIT:1> ) ] ) <EOL> actual = powersum ( base , low , high ) <EOL> assert expected == actual </s>
