| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953 |
- # test int literals
- assert 0xffff == 65535
- assert 0xAAFFFF == 11206655
- assert 0x7fffffff == 2147483647
- assert -0xffff == -65535
- assert -0xAAFFFF == -11206655
- assert -0x7fffffff == -2147483647
- # test 64-bit
- assert 2**60-1 + 546 - 0xfffffffffffff == 1148417904979477026
- # test oct literals
- assert 0o1234 == 668
- assert 0o17777777777 == 2147483647
- assert -0o1234 == -668
- assert -0o17777777777 == -2147483647
- # test binary literals
- assert 0b10010 == 18
- assert -0b10010 == -18
- assert 0b11111111111111111111111111111111 == 4294967295
- assert -0b11111 == -31
- # test == != >= <= < >
- assert -1 == -1
- assert -1 != 1
- assert -1 >= -1
- assert -1 <= -1
- assert -1 < 1
- assert -1 > -2
- # test + - * % ** //
- assert -1 + 1 == 0
- assert -1 - 1 == -2
- assert 4 * -1 == -4
- assert 5 % 2 == 1
- assert 2 ** 3 == 8
- assert 4 // 2 == 2
- assert 5 // 2 == 2
- # test += -= *= //=
- x = 3
- x += 1
- assert x == 4
- x -= 1
- assert x == 3
- x *= 2
- assert x == 6
- x //= 2
- assert x == 3
- # test bit_length
- assert (1).bit_length() == 1
- assert (2).bit_length() == 2
- assert (3).bit_length() == 2
- assert (-1).bit_length() == 1
- assert (-2).bit_length() == 2
- assert (-3).bit_length() == 2
- assert (123123123123123).bit_length() == 47
- assert (-3123123123).bit_length() == 32
- # test int()
- assert int() == 0
- assert int(True) == 1
- assert int(False) == 0
- assert int(1) == 1
- assert int(1.0) == 1
- assert int(1.1) == 1
- assert int(1.9) == 1
- assert int(-1.9) == -1
- assert int(1.5) == 1
- assert int(-1.5) == -1
- assert int("123") == 123
- assert int("0x123", 16) == 291
- assert int("0o123", 8) == 83
- assert int("-0x123", 16) == -291
- assert int("-0o123", 8) == -83
- assert int("-123") == -123
- assert int("+123") == 123
- # test >> << & | ^
- assert 12 >> 1 == 6
- assert 12 << 1 == 24
- assert 12 & 1 == 0
- assert 12 | 1 == 13
- assert 12 ^ 1 == 13
- # test high precision int pow
- assert 7**21 == 558545864083284007
- assert 2**60 == 1152921504606846976
- assert -2**60 == -1152921504606846976
- assert 4**13 == 67108864
- assert (-4)**13 == -67108864
- assert ~3 == -4
- assert ~-3 == 2
- assert ~0 == -1
- # test __str__, __repr__
- assert str(1) == '1'
- assert repr(1) == '1'
- assert 1 < 2 < 3
- assert 4 > 3 >= 3
- assert not 1 < 2 > 3
- assert abs(0) == 0
- assert abs(1) == 1
- assert abs(-1) == 1
- # test negative % and //
- assert -10 % -10 == 0
- assert -10 // -10 == 1
- assert -10 % -9 == -1
- assert -10 // -9 == 1
- assert -10 % -8 == -2
- assert -10 // -8 == 1
- assert -10 % -7 == -3
- assert -10 // -7 == 1
- assert -10 % -6 == -4
- assert -10 // -6 == 1
- assert -10 % -5 == 0
- assert -10 // -5 == 2
- assert -10 % -4 == -2
- assert -10 // -4 == 2
- assert -10 % -3 == -1
- assert -10 // -3 == 3
- assert -10 % -2 == 0
- assert -10 // -2 == 5
- assert -10 % -1 == 0
- assert -10 // -1 == 10
- assert -10 % 1 == 0
- assert -10 // 1 == -10
- assert -10 % 2 == 0
- assert -10 // 2 == -5
- assert -10 % 3 == 2
- assert -10 // 3 == -4
- assert -10 % 4 == 2
- assert -10 // 4 == -3
- assert -10 % 5 == 0
- assert -10 // 5 == -2
- assert -10 % 6 == 2
- assert -10 // 6 == -2
- assert -10 % 7 == 4
- assert -10 // 7 == -2
- assert -10 % 8 == 6
- assert -10 // 8 == -2
- assert -10 % 9 == 8
- assert -10 // 9 == -2
- assert -9 % -10 == -9
- assert -9 // -10 == 0
- assert -9 % -9 == 0
- assert -9 // -9 == 1
- assert -9 % -8 == -1
- assert -9 // -8 == 1
- assert -9 % -7 == -2
- assert -9 // -7 == 1
- assert -9 % -6 == -3
- assert -9 // -6 == 1
- assert -9 % -5 == -4
- assert -9 // -5 == 1
- assert -9 % -4 == -1
- assert -9 // -4 == 2
- assert -9 % -3 == 0
- assert -9 // -3 == 3
- assert -9 % -2 == -1
- assert -9 // -2 == 4
- assert -9 % -1 == 0
- assert -9 // -1 == 9
- assert -9 % 1 == 0
- assert -9 // 1 == -9
- assert -9 % 2 == 1
- assert -9 // 2 == -5
- assert -9 % 3 == 0
- assert -9 // 3 == -3
- assert -9 % 4 == 3
- assert -9 // 4 == -3
- assert -9 % 5 == 1
- assert -9 // 5 == -2
- assert -9 % 6 == 3
- assert -9 // 6 == -2
- assert -9 % 7 == 5
- assert -9 // 7 == -2
- assert -9 % 8 == 7
- assert -9 // 8 == -2
- assert -9 % 9 == 0
- assert -9 // 9 == -1
- assert -8 % -10 == -8
- assert -8 // -10 == 0
- assert -8 % -9 == -8
- assert -8 // -9 == 0
- assert -8 % -8 == 0
- assert -8 // -8 == 1
- assert -8 % -7 == -1
- assert -8 // -7 == 1
- assert -8 % -6 == -2
- assert -8 // -6 == 1
- assert -8 % -5 == -3
- assert -8 // -5 == 1
- assert -8 % -4 == 0
- assert -8 // -4 == 2
- assert -8 % -3 == -2
- assert -8 // -3 == 2
- assert -8 % -2 == 0
- assert -8 // -2 == 4
- assert -8 % -1 == 0
- assert -8 // -1 == 8
- assert -8 % 1 == 0
- assert -8 // 1 == -8
- assert -8 % 2 == 0
- assert -8 // 2 == -4
- assert -8 % 3 == 1
- assert -8 // 3 == -3
- assert -8 % 4 == 0
- assert -8 // 4 == -2
- assert -8 % 5 == 2
- assert -8 // 5 == -2
- assert -8 % 6 == 4
- assert -8 // 6 == -2
- assert -8 % 7 == 6
- assert -8 // 7 == -2
- assert -8 % 8 == 0
- assert -8 // 8 == -1
- assert -8 % 9 == 1
- assert -8 // 9 == -1
- assert -7 % -10 == -7
- assert -7 // -10 == 0
- assert -7 % -9 == -7
- assert -7 // -9 == 0
- assert -7 % -8 == -7
- assert -7 // -8 == 0
- assert -7 % -7 == 0
- assert -7 // -7 == 1
- assert -7 % -6 == -1
- assert -7 // -6 == 1
- assert -7 % -5 == -2
- assert -7 // -5 == 1
- assert -7 % -4 == -3
- assert -7 // -4 == 1
- assert -7 % -3 == -1
- assert -7 // -3 == 2
- assert -7 % -2 == -1
- assert -7 // -2 == 3
- assert -7 % -1 == 0
- assert -7 // -1 == 7
- assert -7 % 1 == 0
- assert -7 // 1 == -7
- assert -7 % 2 == 1
- assert -7 // 2 == -4
- assert -7 % 3 == 2
- assert -7 // 3 == -3
- assert -7 % 4 == 1
- assert -7 // 4 == -2
- assert -7 % 5 == 3
- assert -7 // 5 == -2
- assert -7 % 6 == 5
- assert -7 // 6 == -2
- assert -7 % 7 == 0
- assert -7 // 7 == -1
- assert -7 % 8 == 1
- assert -7 // 8 == -1
- assert -7 % 9 == 2
- assert -7 // 9 == -1
- assert -6 % -10 == -6
- assert -6 // -10 == 0
- assert -6 % -9 == -6
- assert -6 // -9 == 0
- assert -6 % -8 == -6
- assert -6 // -8 == 0
- assert -6 % -7 == -6
- assert -6 // -7 == 0
- assert -6 % -6 == 0
- assert -6 // -6 == 1
- assert -6 % -5 == -1
- assert -6 // -5 == 1
- assert -6 % -4 == -2
- assert -6 // -4 == 1
- assert -6 % -3 == 0
- assert -6 // -3 == 2
- assert -6 % -2 == 0
- assert -6 // -2 == 3
- assert -6 % -1 == 0
- assert -6 // -1 == 6
- assert -6 % 1 == 0
- assert -6 // 1 == -6
- assert -6 % 2 == 0
- assert -6 // 2 == -3
- assert -6 % 3 == 0
- assert -6 // 3 == -2
- assert -6 % 4 == 2
- assert -6 // 4 == -2
- assert -6 % 5 == 4
- assert -6 // 5 == -2
- assert -6 % 6 == 0
- assert -6 // 6 == -1
- assert -6 % 7 == 1
- assert -6 // 7 == -1
- assert -6 % 8 == 2
- assert -6 // 8 == -1
- assert -6 % 9 == 3
- assert -6 // 9 == -1
- assert -5 % -10 == -5
- assert -5 // -10 == 0
- assert -5 % -9 == -5
- assert -5 // -9 == 0
- assert -5 % -8 == -5
- assert -5 // -8 == 0
- assert -5 % -7 == -5
- assert -5 // -7 == 0
- assert -5 % -6 == -5
- assert -5 // -6 == 0
- assert -5 % -5 == 0
- assert -5 // -5 == 1
- assert -5 % -4 == -1
- assert -5 // -4 == 1
- assert -5 % -3 == -2
- assert -5 // -3 == 1
- assert -5 % -2 == -1
- assert -5 // -2 == 2
- assert -5 % -1 == 0
- assert -5 // -1 == 5
- assert -5 % 1 == 0
- assert -5 // 1 == -5
- assert -5 % 2 == 1
- assert -5 // 2 == -3
- assert -5 % 3 == 1
- assert -5 // 3 == -2
- assert -5 % 4 == 3
- assert -5 // 4 == -2
- assert -5 % 5 == 0
- assert -5 // 5 == -1
- assert -5 % 6 == 1
- assert -5 // 6 == -1
- assert -5 % 7 == 2
- assert -5 // 7 == -1
- assert -5 % 8 == 3
- assert -5 // 8 == -1
- assert -5 % 9 == 4
- assert -5 // 9 == -1
- assert -4 % -10 == -4
- assert -4 // -10 == 0
- assert -4 % -9 == -4
- assert -4 // -9 == 0
- assert -4 % -8 == -4
- assert -4 // -8 == 0
- assert -4 % -7 == -4
- assert -4 // -7 == 0
- assert -4 % -6 == -4
- assert -4 // -6 == 0
- assert -4 % -5 == -4
- assert -4 // -5 == 0
- assert -4 % -4 == 0
- assert -4 // -4 == 1
- assert -4 % -3 == -1
- assert -4 // -3 == 1
- assert -4 % -2 == 0
- assert -4 // -2 == 2
- assert -4 % -1 == 0
- assert -4 // -1 == 4
- assert -4 % 1 == 0
- assert -4 // 1 == -4
- assert -4 % 2 == 0
- assert -4 // 2 == -2
- assert -4 % 3 == 2
- assert -4 // 3 == -2
- assert -4 % 4 == 0
- assert -4 // 4 == -1
- assert -4 % 5 == 1
- assert -4 // 5 == -1
- assert -4 % 6 == 2
- assert -4 // 6 == -1
- assert -4 % 7 == 3
- assert -4 // 7 == -1
- assert -4 % 8 == 4
- assert -4 // 8 == -1
- assert -4 % 9 == 5
- assert -4 // 9 == -1
- assert -3 % -10 == -3
- assert -3 // -10 == 0
- assert -3 % -9 == -3
- assert -3 // -9 == 0
- assert -3 % -8 == -3
- assert -3 // -8 == 0
- assert -3 % -7 == -3
- assert -3 // -7 == 0
- assert -3 % -6 == -3
- assert -3 // -6 == 0
- assert -3 % -5 == -3
- assert -3 // -5 == 0
- assert -3 % -4 == -3
- assert -3 // -4 == 0
- assert -3 % -3 == 0
- assert -3 // -3 == 1
- assert -3 % -2 == -1
- assert -3 // -2 == 1
- assert -3 % -1 == 0
- assert -3 // -1 == 3
- assert -3 % 1 == 0
- assert -3 // 1 == -3
- assert -3 % 2 == 1
- assert -3 // 2 == -2
- assert -3 % 3 == 0
- assert -3 // 3 == -1
- assert -3 % 4 == 1
- assert -3 // 4 == -1
- assert -3 % 5 == 2
- assert -3 // 5 == -1
- assert -3 % 6 == 3
- assert -3 // 6 == -1
- assert -3 % 7 == 4
- assert -3 // 7 == -1
- assert -3 % 8 == 5
- assert -3 // 8 == -1
- assert -3 % 9 == 6
- assert -3 // 9 == -1
- assert -2 % -10 == -2
- assert -2 // -10 == 0
- assert -2 % -9 == -2
- assert -2 // -9 == 0
- assert -2 % -8 == -2
- assert -2 // -8 == 0
- assert -2 % -7 == -2
- assert -2 // -7 == 0
- assert -2 % -6 == -2
- assert -2 // -6 == 0
- assert -2 % -5 == -2
- assert -2 // -5 == 0
- assert -2 % -4 == -2
- assert -2 // -4 == 0
- assert -2 % -3 == -2
- assert -2 // -3 == 0
- assert -2 % -2 == 0
- assert -2 // -2 == 1
- assert -2 % -1 == 0
- assert -2 // -1 == 2
- assert -2 % 1 == 0
- assert -2 // 1 == -2
- assert -2 % 2 == 0
- assert -2 // 2 == -1
- assert -2 % 3 == 1
- assert -2 // 3 == -1
- assert -2 % 4 == 2
- assert -2 // 4 == -1
- assert -2 % 5 == 3
- assert -2 // 5 == -1
- assert -2 % 6 == 4
- assert -2 // 6 == -1
- assert -2 % 7 == 5
- assert -2 // 7 == -1
- assert -2 % 8 == 6
- assert -2 // 8 == -1
- assert -2 % 9 == 7
- assert -2 // 9 == -1
- assert -1 % -10 == -1
- assert -1 // -10 == 0
- assert -1 % -9 == -1
- assert -1 // -9 == 0
- assert -1 % -8 == -1
- assert -1 // -8 == 0
- assert -1 % -7 == -1
- assert -1 // -7 == 0
- assert -1 % -6 == -1
- assert -1 // -6 == 0
- assert -1 % -5 == -1
- assert -1 // -5 == 0
- assert -1 % -4 == -1
- assert -1 // -4 == 0
- assert -1 % -3 == -1
- assert -1 // -3 == 0
- assert -1 % -2 == -1
- assert -1 // -2 == 0
- assert -1 % -1 == 0
- assert -1 // -1 == 1
- assert -1 % 1 == 0
- assert -1 // 1 == -1
- assert -1 % 2 == 1
- assert -1 // 2 == -1
- assert -1 % 3 == 2
- assert -1 // 3 == -1
- assert -1 % 4 == 3
- assert -1 // 4 == -1
- assert -1 % 5 == 4
- assert -1 // 5 == -1
- assert -1 % 6 == 5
- assert -1 // 6 == -1
- assert -1 % 7 == 6
- assert -1 // 7 == -1
- assert -1 % 8 == 7
- assert -1 // 8 == -1
- assert -1 % 9 == 8
- assert -1 // 9 == -1
- assert 0 % -10 == 0
- assert 0 // -10 == 0
- assert 0 % -9 == 0
- assert 0 // -9 == 0
- assert 0 % -8 == 0
- assert 0 // -8 == 0
- assert 0 % -7 == 0
- assert 0 // -7 == 0
- assert 0 % -6 == 0
- assert 0 // -6 == 0
- assert 0 % -5 == 0
- assert 0 // -5 == 0
- assert 0 % -4 == 0
- assert 0 // -4 == 0
- assert 0 % -3 == 0
- assert 0 // -3 == 0
- assert 0 % -2 == 0
- assert 0 // -2 == 0
- assert 0 % -1 == 0
- assert 0 // -1 == 0
- assert 0 % 1 == 0
- assert 0 // 1 == 0
- assert 0 % 2 == 0
- assert 0 // 2 == 0
- assert 0 % 3 == 0
- assert 0 // 3 == 0
- assert 0 % 4 == 0
- assert 0 // 4 == 0
- assert 0 % 5 == 0
- assert 0 // 5 == 0
- assert 0 % 6 == 0
- assert 0 // 6 == 0
- assert 0 % 7 == 0
- assert 0 // 7 == 0
- assert 0 % 8 == 0
- assert 0 // 8 == 0
- assert 0 % 9 == 0
- assert 0 // 9 == 0
- assert 1 % -10 == -9
- assert 1 // -10 == -1
- assert 1 % -9 == -8
- assert 1 // -9 == -1
- assert 1 % -8 == -7
- assert 1 // -8 == -1
- assert 1 % -7 == -6
- assert 1 // -7 == -1
- assert 1 % -6 == -5
- assert 1 // -6 == -1
- assert 1 % -5 == -4
- assert 1 // -5 == -1
- assert 1 % -4 == -3
- assert 1 // -4 == -1
- assert 1 % -3 == -2
- assert 1 // -3 == -1
- assert 1 % -2 == -1
- assert 1 // -2 == -1
- assert 1 % -1 == 0
- assert 1 // -1 == -1
- assert 1 % 1 == 0
- assert 1 // 1 == 1
- assert 1 % 2 == 1
- assert 1 // 2 == 0
- assert 1 % 3 == 1
- assert 1 // 3 == 0
- assert 1 % 4 == 1
- assert 1 // 4 == 0
- assert 1 % 5 == 1
- assert 1 // 5 == 0
- assert 1 % 6 == 1
- assert 1 // 6 == 0
- assert 1 % 7 == 1
- assert 1 // 7 == 0
- assert 1 % 8 == 1
- assert 1 // 8 == 0
- assert 1 % 9 == 1
- assert 1 // 9 == 0
- assert 2 % -10 == -8
- assert 2 // -10 == -1
- assert 2 % -9 == -7
- assert 2 // -9 == -1
- assert 2 % -8 == -6
- assert 2 // -8 == -1
- assert 2 % -7 == -5
- assert 2 // -7 == -1
- assert 2 % -6 == -4
- assert 2 // -6 == -1
- assert 2 % -5 == -3
- assert 2 // -5 == -1
- assert 2 % -4 == -2
- assert 2 // -4 == -1
- assert 2 % -3 == -1
- assert 2 // -3 == -1
- assert 2 % -2 == 0
- assert 2 // -2 == -1
- assert 2 % -1 == 0
- assert 2 // -1 == -2
- assert 2 % 1 == 0
- assert 2 // 1 == 2
- assert 2 % 2 == 0
- assert 2 // 2 == 1
- assert 2 % 3 == 2
- assert 2 // 3 == 0
- assert 2 % 4 == 2
- assert 2 // 4 == 0
- assert 2 % 5 == 2
- assert 2 // 5 == 0
- assert 2 % 6 == 2
- assert 2 // 6 == 0
- assert 2 % 7 == 2
- assert 2 // 7 == 0
- assert 2 % 8 == 2
- assert 2 // 8 == 0
- assert 2 % 9 == 2
- assert 2 // 9 == 0
- assert 3 % -10 == -7
- assert 3 // -10 == -1
- assert 3 % -9 == -6
- assert 3 // -9 == -1
- assert 3 % -8 == -5
- assert 3 // -8 == -1
- assert 3 % -7 == -4
- assert 3 // -7 == -1
- assert 3 % -6 == -3
- assert 3 // -6 == -1
- assert 3 % -5 == -2
- assert 3 // -5 == -1
- assert 3 % -4 == -1
- assert 3 // -4 == -1
- assert 3 % -3 == 0
- assert 3 // -3 == -1
- assert 3 % -2 == -1
- assert 3 // -2 == -2
- assert 3 % -1 == 0
- assert 3 // -1 == -3
- assert 3 % 1 == 0
- assert 3 // 1 == 3
- assert 3 % 2 == 1
- assert 3 // 2 == 1
- assert 3 % 3 == 0
- assert 3 // 3 == 1
- assert 3 % 4 == 3
- assert 3 // 4 == 0
- assert 3 % 5 == 3
- assert 3 // 5 == 0
- assert 3 % 6 == 3
- assert 3 // 6 == 0
- assert 3 % 7 == 3
- assert 3 // 7 == 0
- assert 3 % 8 == 3
- assert 3 // 8 == 0
- assert 3 % 9 == 3
- assert 3 // 9 == 0
- assert 4 % -10 == -6
- assert 4 // -10 == -1
- assert 4 % -9 == -5
- assert 4 // -9 == -1
- assert 4 % -8 == -4
- assert 4 // -8 == -1
- assert 4 % -7 == -3
- assert 4 // -7 == -1
- assert 4 % -6 == -2
- assert 4 // -6 == -1
- assert 4 % -5 == -1
- assert 4 // -5 == -1
- assert 4 % -4 == 0
- assert 4 // -4 == -1
- assert 4 % -3 == -2
- assert 4 // -3 == -2
- assert 4 % -2 == 0
- assert 4 // -2 == -2
- assert 4 % -1 == 0
- assert 4 // -1 == -4
- assert 4 % 1 == 0
- assert 4 // 1 == 4
- assert 4 % 2 == 0
- assert 4 // 2 == 2
- assert 4 % 3 == 1
- assert 4 // 3 == 1
- assert 4 % 4 == 0
- assert 4 // 4 == 1
- assert 4 % 5 == 4
- assert 4 // 5 == 0
- assert 4 % 6 == 4
- assert 4 // 6 == 0
- assert 4 % 7 == 4
- assert 4 // 7 == 0
- assert 4 % 8 == 4
- assert 4 // 8 == 0
- assert 4 % 9 == 4
- assert 4 // 9 == 0
- assert 5 % -10 == -5
- assert 5 // -10 == -1
- assert 5 % -9 == -4
- assert 5 // -9 == -1
- assert 5 % -8 == -3
- assert 5 // -8 == -1
- assert 5 % -7 == -2
- assert 5 // -7 == -1
- assert 5 % -6 == -1
- assert 5 // -6 == -1
- assert 5 % -5 == 0
- assert 5 // -5 == -1
- assert 5 % -4 == -3
- assert 5 // -4 == -2
- assert 5 % -3 == -1
- assert 5 // -3 == -2
- assert 5 % -2 == -1
- assert 5 // -2 == -3
- assert 5 % -1 == 0
- assert 5 // -1 == -5
- assert 5 % 1 == 0
- assert 5 // 1 == 5
- assert 5 % 2 == 1
- assert 5 // 2 == 2
- assert 5 % 3 == 2
- assert 5 // 3 == 1
- assert 5 % 4 == 1
- assert 5 // 4 == 1
- assert 5 % 5 == 0
- assert 5 // 5 == 1
- assert 5 % 6 == 5
- assert 5 // 6 == 0
- assert 5 % 7 == 5
- assert 5 // 7 == 0
- assert 5 % 8 == 5
- assert 5 // 8 == 0
- assert 5 % 9 == 5
- assert 5 // 9 == 0
- assert 6 % -10 == -4
- assert 6 // -10 == -1
- assert 6 % -9 == -3
- assert 6 // -9 == -1
- assert 6 % -8 == -2
- assert 6 // -8 == -1
- assert 6 % -7 == -1
- assert 6 // -7 == -1
- assert 6 % -6 == 0
- assert 6 // -6 == -1
- assert 6 % -5 == -4
- assert 6 // -5 == -2
- assert 6 % -4 == -2
- assert 6 // -4 == -2
- assert 6 % -3 == 0
- assert 6 // -3 == -2
- assert 6 % -2 == 0
- assert 6 // -2 == -3
- assert 6 % -1 == 0
- assert 6 // -1 == -6
- assert 6 % 1 == 0
- assert 6 // 1 == 6
- assert 6 % 2 == 0
- assert 6 // 2 == 3
- assert 6 % 3 == 0
- assert 6 // 3 == 2
- assert 6 % 4 == 2
- assert 6 // 4 == 1
- assert 6 % 5 == 1
- assert 6 // 5 == 1
- assert 6 % 6 == 0
- assert 6 // 6 == 1
- assert 6 % 7 == 6
- assert 6 // 7 == 0
- assert 6 % 8 == 6
- assert 6 // 8 == 0
- assert 6 % 9 == 6
- assert 6 // 9 == 0
- assert 7 % -10 == -3
- assert 7 // -10 == -1
- assert 7 % -9 == -2
- assert 7 // -9 == -1
- assert 7 % -8 == -1
- assert 7 // -8 == -1
- assert 7 % -7 == 0
- assert 7 // -7 == -1
- assert 7 % -6 == -5
- assert 7 // -6 == -2
- assert 7 % -5 == -3
- assert 7 // -5 == -2
- assert 7 % -4 == -1
- assert 7 // -4 == -2
- assert 7 % -3 == -2
- assert 7 // -3 == -3
- assert 7 % -2 == -1
- assert 7 // -2 == -4
- assert 7 % -1 == 0
- assert 7 // -1 == -7
- assert 7 % 1 == 0
- assert 7 // 1 == 7
- assert 7 % 2 == 1
- assert 7 // 2 == 3
- assert 7 % 3 == 1
- assert 7 // 3 == 2
- assert 7 % 4 == 3
- assert 7 // 4 == 1
- assert 7 % 5 == 2
- assert 7 // 5 == 1
- assert 7 % 6 == 1
- assert 7 // 6 == 1
- assert 7 % 7 == 0
- assert 7 // 7 == 1
- assert 7 % 8 == 7
- assert 7 // 8 == 0
- assert 7 % 9 == 7
- assert 7 // 9 == 0
- assert 8 % -10 == -2
- assert 8 // -10 == -1
- assert 8 % -9 == -1
- assert 8 // -9 == -1
- assert 8 % -8 == 0
- assert 8 // -8 == -1
- assert 8 % -7 == -6
- assert 8 // -7 == -2
- assert 8 % -6 == -4
- assert 8 // -6 == -2
- assert 8 % -5 == -2
- assert 8 // -5 == -2
- assert 8 % -4 == 0
- assert 8 // -4 == -2
- assert 8 % -3 == -1
- assert 8 // -3 == -3
- assert 8 % -2 == 0
- assert 8 // -2 == -4
- assert 8 % -1 == 0
- assert 8 // -1 == -8
- assert 8 % 1 == 0
- assert 8 // 1 == 8
- assert 8 % 2 == 0
- assert 8 // 2 == 4
- assert 8 % 3 == 2
- assert 8 // 3 == 2
- assert 8 % 4 == 0
- assert 8 // 4 == 2
- assert 8 % 5 == 3
- assert 8 // 5 == 1
- assert 8 % 6 == 2
- assert 8 // 6 == 1
- assert 8 % 7 == 1
- assert 8 // 7 == 1
- assert 8 % 8 == 0
- assert 8 // 8 == 1
- assert 8 % 9 == 8
- assert 8 // 9 == 0
- assert 9 % -10 == -1
- assert 9 // -10 == -1
- assert 9 % -9 == 0
- assert 9 // -9 == -1
- assert 9 % -8 == -7
- assert 9 // -8 == -2
- assert 9 % -7 == -5
- assert 9 // -7 == -2
- assert 9 % -6 == -3
- assert 9 // -6 == -2
- assert 9 % -5 == -1
- assert 9 // -5 == -2
- assert 9 % -4 == -3
- assert 9 // -4 == -3
- assert 9 % -3 == 0
- assert 9 // -3 == -3
- assert 9 % -2 == -1
- assert 9 // -2 == -5
- assert 9 % -1 == 0
- assert 9 // -1 == -9
- assert 9 % 1 == 0
- assert 9 // 1 == 9
- assert 9 % 2 == 1
- assert 9 // 2 == 4
- assert 9 % 3 == 0
- assert 9 // 3 == 3
- assert 9 % 4 == 1
- assert 9 // 4 == 2
- assert 9 % 5 == 4
- assert 9 // 5 == 1
- assert 9 % 6 == 3
- assert 9 // 6 == 1
- assert 9 % 7 == 2
- assert 9 // 7 == 1
- assert 9 % 8 == 1
- assert 9 // 8 == 1
- assert 9 % 9 == 0
- assert 9 // 9 == 1
- # `+`, `-`, `*` and the comparisons take an inline fast path when both operands
- # are `int` or `float`. Cover every type pairing and every way out of it.
- i, f = 7, 2.5
- # int op int -> int
- assert 7 + 2 == 9 and type(7 + 2) is int
- assert 7 - 2 == 5 and type(7 - 2) is int
- assert 7 * 2 == 14 and type(7 * 2) is int
- # float op float -> float
- assert 7.5 + 2.5 == 10.0 and type(7.5 + 2.5) is float
- assert 7.5 - 2.5 == 5.0 and type(7.5 - 2.5) is float
- assert 7.5 * 2.0 == 15.0 and type(7.5 * 2.0) is float
- # mixed operands promote to float in both directions
- assert i + f == 9.5 and type(i + f) is float
- assert f + i == 9.5 and type(f + i) is float
- assert i - f == 4.5 and type(i - f) is float
- assert f - i == -4.5 and type(f - i) is float
- assert i * f == 17.5 and type(i * f) is float
- assert f * i == 17.5 and type(f * i) is float
- # comparisons, all four pairings
- assert (2 < 7) and not (7 < 2)
- assert (2.5 < 7.5) and not (7.5 < 2.5)
- assert (2 < 7.5) and not (7.5 < 2)
- assert (2.5 < 7) and not (7 < 2.5)
- assert (7 >= 7) and (7.0 >= 7) and (7 >= 7.0) and (7.0 >= 7.0)
- assert (7 == 7.0) and (7.0 == 7) and not (7 != 7.0)
- assert (7 <= 7.0) and (7.0 <= 7) and not (7 > 7.0) and not (7.0 > 7)
- # `bool` is a separate type here, not a subclass of `int`, so it must fall
- # through to the generic path and reach `bool.__add__` and friends
- assert True + 2 == 3
- assert 2 + True == 3
- assert True - 1 == 0
- assert 2 * True == 2
- # non-numbers still reach their own magic methods
- assert 'a' + 'b' == 'ab'
- assert [1] + [2] == [1, 2]
- assert 'a' * 2 == 'aa'
- assert (1, 2) < (1, 3)
- class Vec:
- def __init__(self, v):
- self.v = v
- def __add__(self, other):
- return Vec(self.v + other.v)
- def __radd__(self, other):
- return Vec(self.v + other)
- def __lt__(self, other):
- return self.v < other.v
- assert (Vec(1) + Vec(2)).v == 3
- assert (2 + Vec(1)).v == 3 # int.__add__ returns NotImplemented -> __radd__
- assert Vec(1) < Vec(2)
- # unsupported pairings still raise
- try:
- 1 + 'a'
- exit(1)
- except TypeError:
- pass
- try:
- 1 < 'a'
- exit(1)
- except TypeError:
- pass
- # division is deliberately not on the fast path
- assert 7 / 2 == 3.5 and type(7 / 2) is float
- assert 7 // 2 == 3 and 7 % 2 == 1
- try:
- 1 / 0
- exit(1)
- except ZeroDivisionError:
- pass
|