<s> import unittest <EOL> from polynomial import Polynomial <EOL> from ff import GF256int <EOL> class TestGFPoly ( unittest . TestCase ) : <EOL> """<STR_LIT>""" <EOL> def test_add ( self ) : <EOL> one = Polynomial ( map ( GF256int , ( <NUM_LIT:8> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:1> ) ) ) <EOL> two = Polynomial ( map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ) ) ) <EOL> r = one + two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:9> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:9> ) ) <EOL> def test_sub ( self ) : <EOL> one = Polynomial ( map ( GF256int , ( <NUM_LIT:8> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:1> ) ) ) <EOL> two = Polynomial ( map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ) ) ) <EOL> r = one - two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:9> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:9> ) ) <EOL> def test_mul ( self ) : <EOL> one = Polynomial ( map ( GF256int , ( <NUM_LIT:8> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:1> ) ) ) <EOL> two = Polynomial ( map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ) ) ) <EOL> r = one * two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:7> , <NUM_LIT> , <NUM_LIT:8> ) ) <EOL> def test_div ( self ) : <EOL> one = Polynomial ( map ( GF256int , ( <NUM_LIT:8> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:1> ) ) ) <EOL> two = Polynomial ( map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ) ) ) <EOL> q , r = divmod ( two , one ) <EOL> self . assertEqual ( q . coefficients , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:11> ) ) <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT:3> ) ) <EOL> self . assertEqual ( q * one + r , two ) <EOL> def test_div_scalar ( self ) : <EOL> """<STR_LIT>""" <EOL> numbers = map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:20> , <NUM_LIT:50> , <NUM_LIT:100> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:4> , <NUM_LIT:5> , <NUM_LIT:2> ) ) <EOL> scalar = GF256int ( <NUM_LIT> ) <EOL> poly = Polynomial ( numbers ) <EOL> scalarpoly = Polynomial ( x0 = scalar ) <EOL> self . assertEqual ( <EOL> ( poly // scalarpoly ) . coefficients , <EOL> tuple ( map ( lambda x : x / scalar , numbers ) ) <EOL> ) <EOL> def test_div_scalar2 ( self ) : <EOL> """<STR_LIT>""" <EOL> a = Polynomial ( map ( GF256int , ( <NUM_LIT:5> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:6> , <NUM_LIT:8> ) ) ) <EOL> scalar = GF256int ( <NUM_LIT:50> ) <EOL> self . assertEqual ( <EOL> a * Polynomial ( x0 = scalar ) , <EOL> a // Polynomial ( x0 = scalar . inverse ( ) ) <EOL> ) <EOL> class TestPolynomial ( unittest . TestCase ) : <EOL> def test_add_1 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:3> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> r = one + two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:7> , <NUM_LIT:6> , <NUM_LIT:11> , <NUM_LIT:5> ) ) <EOL> def test_add_2 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:2> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> r = one + two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:12> , <NUM_LIT:5> , <NUM_LIT:9> , <NUM_LIT:4> ) ) <EOL> def test_add_3 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:7> , <NUM_LIT:3> , <NUM_LIT:5> , <NUM_LIT:2> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:6> , <NUM_LIT:8> , <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> r = one + two <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:6> , <NUM_LIT:8> , <NUM_LIT:12> , <NUM_LIT:5> , <NUM_LIT:9> , <NUM_LIT:4> ) ) <EOL> def test_mul_1 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:7> , <NUM_LIT:3> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:5> , <NUM_LIT:2> , <NUM_LIT:4> , <NUM_LIT:2> ) ) <EOL> r = one * two <EOL> self . assertEqual ( r . coefficients , <EOL> ( <NUM_LIT:10> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:6> ) ) <EOL> def test_div_1 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:4> , <NUM_LIT:0> , <NUM_LIT:3> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> ) ) <EOL> q , r = divmod ( one , two ) <EOL> self . assertEqual ( q , one // two ) <EOL> self . assertEqual ( r , one % two ) <EOL> self . assertEqual ( q . coefficients , ( <NUM_LIT:1> , <NUM_LIT:4> ) ) <EOL> self . assertEqual ( r . coefficients , ( - <NUM_LIT:1> , - <NUM_LIT:1> ) ) <EOL> def test_div_2 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:1> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , - <NUM_LIT:1> ) ) <EOL> q , r = divmod ( one , two ) <EOL> self . assertEqual ( q , one // two ) <EOL> self . assertEqual ( r , one % two ) <EOL> self . assertEqual ( q . coefficients , ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:4> ) ) <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:4> , <NUM_LIT:5> ) ) <EOL> def test_div_3 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , - <NUM_LIT:1> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , - <NUM_LIT:1> ) ) <EOL> q , r = divmod ( one , two ) <EOL> self . assertEqual ( q , one // two ) <EOL> self . assertEqual ( r , one % two ) <EOL> self . assertEqual ( q . coefficients , ( <NUM_LIT:0> , ) ) <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:1> , <NUM_LIT:0> , - <NUM_LIT:1> ) ) <EOL> def test_div_4 ( self ) : <EOL> one = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:0> , <NUM_LIT:1> , - <NUM_LIT:2> , - <NUM_LIT:4> ) ) <EOL> two = Polynomial ( ( <NUM_LIT:1> , <NUM_LIT:0> , - <NUM_LIT:1> ) ) <EOL> q , r = divmod ( one , two ) <EOL> self . assertEqual ( q , one // two ) <EOL> self . assertEqual ( r , one % two ) <EOL> self . assertEqual ( q . coefficients , ( <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:4> ) ) <EOL> self . assertEqual ( r . coefficients , ( <NUM_LIT:0> , ) ) <EOL> def test_getcoeff ( self ) : <EOL> p = Polynomial ( ( <NUM_LIT:9> , <NUM_LIT:3> , <NUM_LIT:3> , <NUM_LIT:2> , <NUM_LIT:2> , <NUM_LIT:3> , <NUM_LIT:1> , - <NUM_LIT:2> , - <NUM_LIT:4> ) ) <EOL> self . assertEqual ( p . get_coefficient ( <NUM_LIT:0> ) , - <NUM_LIT:4> ) <EOL> self . assertEqual ( p . get_coefficient ( <NUM_LIT:2> ) , <NUM_LIT:1> ) <EOL> self . assertEqual ( p . get_coefficient ( <NUM_LIT:8> ) , <NUM_LIT:9> ) <EOL> self . assertEqual ( p . get_coefficient ( <NUM_LIT:9> ) , <NUM_LIT:0> ) <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> unittest . main ( ) </s>
