File: test_binary.py

package info (click to toggle)
construct 2.10.68%2Bdfsg1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,812 kB
  • sloc: python: 11,793; makefile: 135
file content (81 lines) | stat: -rw-r--r-- 3,663 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
from tests.declarativeunittest import *
from construct.lib.binary import *


def test_integer2bits():
    assert integer2bits(0, 0, False) == b""
    assert integer2bits(0, 0, True) == b""
    assert integer2bits(19, 5) == b"\x01\x00\x00\x01\x01"
    assert integer2bits(19, 8) == b"\x00\x00\x00\x01\x00\x00\x01\x01"
    assert integer2bits(-13, 5, True) == b"\x01\x00\x00\x01\x01"
    assert integer2bits(-13, 8, True) == b"\x01\x01\x01\x01\x00\x00\x01\x01"
    assert raises(integer2bits, 0, -1) == ValueError
    assert raises(integer2bits, -1, 8, False) == ValueError
    assert raises(integer2bits, -2**64, 8, True) == ValueError
    assert raises(integer2bits,  2**64, 8, True) == ValueError
    assert raises(integer2bits, -2**64, 8, False) == ValueError
    assert raises(integer2bits,  2**64, 8, False) == ValueError

def test_integer2bytes():
    assert integer2bytes(0, 0, False) == b""
    assert integer2bytes(0, 0, True) == b""
    assert integer2bytes(0, 4) == b"\x00\x00\x00\x00"
    assert integer2bytes(1, 4) == b"\x00\x00\x00\x01"
    assert integer2bytes(19, 4) == b'\x00\x00\x00\x13'
    assert integer2bytes(255, 1) == b"\xff"
    assert integer2bytes(255, 4) == b"\x00\x00\x00\xff"
    assert integer2bytes(-1, 4, True) == b"\xff\xff\xff\xff"
    assert integer2bytes(-255, 4, True) == b"\xff\xff\xff\x01"
    assert raises(integer2bytes, 0, -1) == ValueError
    assert raises(integer2bytes, -1, 8, False) == ValueError
    assert raises(integer2bytes, -2**64, 4, True) == ValueError
    assert raises(integer2bytes,  2**64, 4, True) == ValueError
    assert raises(integer2bytes, -2**64, 4, False) == ValueError
    assert raises(integer2bytes,  2**64, 4, False) == ValueError

def test_bits2integer():
    assert bits2integer(b"", False) == 0
    assert bits2integer(b"", True) == 0
    assert bits2integer(b"\x01\x00\x00\x01\x01", False) == 19
    assert bits2integer(b"\x01\x00\x00\x01\x01", True) == -13

def test_bytes2integer():
    assert bytes2integer(b"", False) == 0
    assert bytes2integer(b"", True) == 0
    assert bytes2integer(b"\x00") == 0
    assert bytes2integer(b"\x00", True) == 0
    assert bytes2integer(b"\xff") == 255
    assert bytes2integer(b"\xff", True) == -1
    assert bytes2integer(b'\x00\x00\x00\x13', False) == 19
    assert bytes2integer(b'\x00\x00\x00\x13', True) == 19

def test_cross_integers():
    for i in [-300,-255,-100,-1,0,1,100,255,300]:
        assert bits2integer(integer2bits(i,64,signed=(i<0)),signed=(i<0)) == i
        assert bytes2integer(integer2bytes(i,8,signed=(i<0)),signed=(i<0)) == i
        assert bits2bytes(integer2bits(i,64,signed=(i<0))) == integer2bytes(i,8,signed=(i<0))
        assert bytes2bits(integer2bytes(i,8,signed=(i<0))) == integer2bits(i,64,signed=(i<0))

def test_bytes2bits():
    assert bytes2bits(b"") == b""
    assert bytes2bits(b"ab") == b"\x00\x01\x01\x00\x00\x00\x00\x01\x00\x01\x01\x00\x00\x00\x01\x00"

def test_bits2bytes():
    assert bits2bytes(b"") == b""
    assert bits2bytes(b"\x00\x01\x01\x00\x00\x00\x00\x01\x00\x01\x01\x00\x00\x00\x01\x00") == b"ab"
    assert raises(bits2bytes, b"\x00") == ValueError
    assert raises(bits2bytes, b"\x00\x00\x00\x00\x00\x00\x00") == ValueError

def test_swapbytes():
    assert swapbytes(b"") == b""
    assert swapbytes(b"abcd") == b"dcba"

def test_swapbytesinbits():
    assert swapbytesinbits(b"") == b""
    assert swapbytesinbits(b"0000000011111111") == b"1111111100000000"
    assert raises(swapbytesinbits, b"1") == ValueError

def test_swapbitsinbytes():
    assert swapbitsinbytes(b"") == b""
    assert swapbitsinbytes(b"\xf0") == b"\x0f"
    assert swapbitsinbytes(b"\xf0\x00") == b"\x0f\x00"