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.
88 lines
2.5 KiB
88 lines
2.5 KiB
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' |
|
|
|
|