forked from 7sDream/pyqart
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_bits.py
90 lines (74 loc) · 2.5 KB
/
test_bits.py
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
82
83
84
85
86
87
88
89
90
import unittest
from pyqart.common.bits import Bits
class TestBits(unittest.TestCase):
def test_bits_as_string_when_no_data(self):
b = Bits()
self.assertEqual(b.as_string, '')
def test_bits_as_string_when_has_data(self):
b = Bits()
b.append(0b11010011, 8)
self.assertEqual(b.as_string, '11010011')
b.append(0b1000, 4)
self.assertEqual(b.as_string, '110100111000')
def test_bits_as_int_when_no_data(self):
b = Bits()
self.assertEqual(b.as_int, -1)
def test_bits_as_int_when_less_than_a_byte(self):
b = Bits()
b.append(1, 1)
self.assertEqual(b.as_int, 1)
def test_bits_as_int_when_between_one_and_two_byte(self):
b = Bits()
b.append(0b111100111, 9)
self.assertEqual(b.as_int, 0b111100111)
def test_bits_append_bit(self):
b = Bits()
b.append_bit(True)
b.append_bit(True)
b.append_bit(False)
b.append_bit(False)
self.assertEqual(b.as_int, 0b1100)
b.append_bit(True)
b.append_bit(False)
b.append_bit(False)
b.append_bit(False)
self.assertEqual(b.as_int, 0b11001000)
def test_bits_append(self):
b = Bits()
b.append(0xAC, 8)
self.assertEqual(b.as_int, 0xAC)
b.append(0xF, 4)
self.assertEqual(b.as_int, 0x0ACF)
def test_bits_extend_all(self):
b = Bits()
b.extend(b'\xAC')
self.assertEqual(b.as_int, 0xAC)
b.extend(bytearray(b'\x1F'))
self.assertEqual(b.as_int, 0x0AC1F)
def test_bits_extend_other_bits_all(self):
b = Bits()
b.extend(b'\xAC')
other_bits = Bits.copy_from(b)
b.extend(other_bits)
self.assertEqual(b.as_int, 0xACAC)
def test_bits_extend_other_bytes_0_to_not_end(self):
b = Bits()
b.extend(b'\x0F', count=6)
self.assertEqual(b.as_int, 3)
def test_bits_extend_other_bytes_not_start_to_end(self):
b = Bits()
b.extend(b'\x0F', 4)
self.assertEqual(b.as_int, 15)
def test_bits_extend_other_bytes_not_start_to_not_end(self):
b = Bits()
b.extend(b'\x0F', 4, 2)
self.assertEqual(b.as_int, 3)
def test_bits_xor(self):
b = Bits(0b001010001, 9)
o = Bits(0b0010110, 7)
b.xor(o, 2, 3, 3)
self.assertEqual(b.as_string, '001100001')
b = Bits(0b001010001, 9)
o = Bits(0b0010110, 7)
b.xor(o, 2, 3)
self.assertEqual(b.as_string, '001100001')