Skip to content

Commit 3422471

Browse files
committed
update markdown
1 parent 49b5f74 commit 3422471

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

python/README.md

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,131 @@ bit_array.print() # 비트 순서 반전 출력
7575

7676
---
7777

78+
```python
79+
####################################
80+
# Unit test function
81+
####################################
82+
def runTests():
83+
print("Testing BitArray class...\n")
84+
85+
# Test: Constructor and clear
86+
print("Test: Constructor and clear")
87+
bit_array = BitArray([0b11000000], 8) # decimal 192
88+
bit_array.print() # 1100 0000
89+
assert bit_array.size() == 8
90+
bit_array.clear()
91+
assert bit_array.size() == 0
92+
assert bit_array.data() == []
93+
print("Passed\n")
94+
95+
# Test: from_array and size
96+
print("Test: from_array and size")
97+
bit_array.from_array([0b11110000, 0b10101010], 16) # decimal 240, 252
98+
bit_array.print() # 1111 0000 1010 1010
99+
assert bit_array.size() == 16
100+
print("Passed\n")
101+
102+
# Test: set_bits
103+
print("Test: set_bits")
104+
new_bit_buffer_size = 10
105+
bit_array.set_bits(new_bit_buffer_size)
106+
bit_array.print() # 0000 0000 00
107+
assert bit_array.size() == new_bit_buffer_size
108+
assert all(bit == 0 for bit in bit_array.to_array())
109+
print("Passed\n")
110+
111+
# Test: set_bytes
112+
print("Test: set_bytes")
113+
new_byte_buffer_size = 2
114+
bit_array.set_bytes(new_byte_buffer_size)
115+
bit_array.print() # 0000 0000 0000 0000
116+
assert bit_array.size() == (new_byte_buffer_size*8)
117+
assert all(bit == 0 for bit in bit_array.to_array())
118+
print("Passed\n")
119+
120+
# Test: to_int_array
121+
print("Test: to_int_array")
122+
bit_array.from_array([0b10101010, 0b11001100], 16) # decimal 170, 204
123+
int_array = bit_array.to_int_array()
124+
print("Int Array:", int_array) # [1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 0]
125+
assert int_array == [
126+
1, 0, 1, 0, 1, 0, 1, 0,
127+
1, 1, 0, 0, 1, 1, 0, 0
128+
]
129+
print("Passed\n")
130+
131+
# Test: get
132+
print("Test: get")
133+
sub_array = bit_array.get(4, 8)
134+
# Data 1010 1010 1100 1100
135+
# Offset 0123 4567 8901 2345
136+
sub_array.print() # 1010 1100
137+
assert sub_array.to_int_array() == [1, 0, 1, 0, 1, 1, 0, 0]
138+
print("Passed\n")
139+
140+
# Test: merge
141+
print("Test: merge")
142+
bit_array.clear()
143+
bit_array.set_bits(16)
144+
merge_array = BitArray([0b11110000], 8)
145+
assert bit_array.merge(merge_array, 4)
146+
bit_array.print() # 0000 1111 0000 0000
147+
assert bit_array.to_int_array() == [
148+
0, 0, 0, 0,
149+
1, 1, 1, 1, 0, 0, 0, 0, # merge data
150+
0, 0, 0, 0
151+
]
152+
print("Passed\n")
153+
154+
# Test: operator +
155+
print("Test: operator +")
156+
array1 = BitArray([0b11000000], 3) # 110
157+
array2 = BitArray([0b01000000], 2) # 01
158+
combined = array1 + array2 # 110 + 01
159+
combined.print() # 1100 1
160+
assert combined.size() == 5
161+
assert combined.to_array() == [1, 1, 0, 0, 1]
162+
print("Passed\n")
163+
164+
combined = BitArray([0b11100000], 5) # 이진수 1 1 1 0 0 (5 bit)
165+
166+
# Test: operator >>
167+
print("Test: operator >>")
168+
shifted_right = combined >> 2
169+
shifted_right.print()
170+
assert shifted_right.to_int_array() == [0, 0, 1, 1, 1]
171+
print("Passed\n")
172+
173+
# Test: operator <<
174+
print("Test: operator <<")
175+
combined.print() # 11100
176+
shifted_left = combined << 2
177+
shifted_left.print() # 10000
178+
assert shifted_left.to_int_array() == [1, 0, 0, 0, 0]
179+
print("Passed\n")
180+
181+
# Test: reverser
182+
print("Test: reverser")
183+
reversed_array = BitArray([0b11010000, 0b10100000], 10)
184+
reversed_array.print() # 1101 0000 10
185+
reversed_array.reverser()
186+
reversed_array.print() # 0100 0010 11
187+
assert reversed_array.to_int_array() == [
188+
0, 1, 0, 0, 0, 0, 1, 0, 1, 1 ]
189+
print("Passed\n")
190+
191+
# Test: data
192+
print("Test: data")
193+
byte_data = reversed_array.data()
194+
print("Byte Data:", byte_data)
195+
assert byte_data == [0b01000010, 0b11000000]
196+
print("Passed\n")
197+
198+
print("All tests passed!")
199+
```
200+
201+
---
202+
78203
### 활용 가능 분야
79204
- **네트워크 프로토콜 분석**: 비트 기반의 데이터 패킷 처리.
80205
- **파일 포맷 해석**: 바이너리 데이터 처리.

0 commit comments

Comments
 (0)