You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.5 KiB
89 lines
2.5 KiB
4 years ago
|
from kyupy.packed_vectors import PackedVectors
|
||
|
|
||
|
|
||
|
def test_basic():
|
||
|
ba = PackedVectors(8, 1, 1)
|
||
|
assert '0\n0\n0\n0\n0\n0\n0\n0' == str(ba)
|
||
|
ba.set_value(0, 0, 1)
|
||
|
ba.set_value(1, 0, 'H')
|
||
|
ba.set_value(2, 0, 'h')
|
||
|
ba.set_value(3, 0, True)
|
||
|
ba.set_value(4, 0, 0)
|
||
|
ba.set_value(5, 0, 'L')
|
||
|
ba.set_value(6, 0, 'l')
|
||
|
ba.set_value(7, 0, False)
|
||
|
assert '1\n1\n1\n1\n0\n0\n0\n0' == str(ba)
|
||
|
ba.set_value(1, 0, '0')
|
||
|
ba.set_value(5, 0, '1')
|
||
|
assert '1\n0\n1\n1\n0\n1\n0\n0' == str(ba)
|
||
|
ba = PackedVectors(8, 1, 2)
|
||
|
assert '-\n-\n-\n-\n-\n-\n-\n-' == str(ba)
|
||
|
ba.set_value(0, 0, 1)
|
||
|
ba.set_value(7, 0, 0)
|
||
|
ba.set_value(4, 0, 'X')
|
||
|
assert '1\n-\n-\n-\nX\n-\n-\n0' == str(ba)
|
||
|
ba.set_value(4, 0, '-')
|
||
|
assert '1\n-\n-\n-\n-\n-\n-\n0' == str(ba)
|
||
|
ba = PackedVectors(8, 2, 2)
|
||
|
assert '--\n--\n--\n--\n--\n--\n--\n--' == str(ba)
|
||
|
ba.set_value(0, 0, '1')
|
||
|
ba.set_value(7, 1, '0')
|
||
|
ba.set_values(1, 'XX')
|
||
|
assert '1-\nXX\n--\n--\n--\n--\n--\n-0' == str(ba)
|
||
|
|
||
|
|
||
|
def test_8v():
|
||
|
ba = PackedVectors(1, 8, 3)
|
||
|
assert '--------' == str(ba)
|
||
|
ba.set_values(0, r'-x01^v\/')
|
||
|
assert r'-X01PNFR' == str(ba)
|
||
|
ba.set_values(0, '-XLHPNFR')
|
||
|
assert r'-X01PNFR' == str(ba)
|
||
|
ba.set_values(0, '-xlhpnfr')
|
||
|
assert r'-X01PNFR' == str(ba)
|
||
|
p1 = PackedVectors(1, 8, 1)
|
||
|
p2 = PackedVectors(1, 8, 1)
|
||
|
p1.set_values(0, '01010101')
|
||
|
p2.set_values(0, '00110011')
|
||
|
p = PackedVectors.from_pair(p1, p2)
|
||
|
assert r'0FR10FR1' == str(p)
|
||
|
p1 = PackedVectors(1, 8, 2)
|
||
|
p2 = PackedVectors(1, 8, 2)
|
||
|
p1.set_values(0, '0101-X-X')
|
||
|
p2.set_values(0, '00110011')
|
||
|
p = PackedVectors.from_pair(p1, p2)
|
||
|
assert r'0FR1----' == str(p)
|
||
|
p1.set_values(0, '0101-X-X')
|
||
|
p2.set_values(0, '-X-X--XX')
|
||
|
p = PackedVectors.from_pair(p1, p2)
|
||
|
assert r'--------' == str(p)
|
||
|
|
||
|
|
||
|
def test_slicing():
|
||
|
lv = PackedVectors(3, 2, 1)
|
||
|
assert '00\n00\n00' == str(lv)
|
||
|
lv.set_value(1, 0, '1')
|
||
|
lv.set_value(1, 1, '1')
|
||
|
assert '00' == lv[0]
|
||
|
assert '11' == lv[1]
|
||
|
assert 3 == len(lv)
|
||
|
lv2 = lv[1:3]
|
||
|
assert 2 == len(lv2)
|
||
|
assert '11' == lv2[0]
|
||
|
assert '00' == lv2[1]
|
||
|
|
||
|
|
||
|
def test_copy():
|
||
|
lv1 = PackedVectors(8, 1, 1)
|
||
|
lv1.set_values_for_position(0, '01010101')
|
||
|
lv2 = PackedVectors(8, 1, 1)
|
||
|
lv2.set_values_for_position(0, '00100101')
|
||
|
diff = lv1.diff(lv2)
|
||
|
lv3 = lv1.copy(selection_mask=diff)
|
||
|
assert str(lv3) == '1\n0\n1'
|
||
|
lv4 = lv1.copy(selection_mask=~diff)
|
||
|
assert str(lv4) == '0\n0\n1\n0\n1'
|
||
|
lv5 = lv3 + lv4
|
||
|
assert str(lv5) == '1\n0\n1\n0\n0\n1\n0\n1'
|
||
|
|