start designing new data structures for m-valued logic
This commit is contained in:
1 parent
08a22cf251
commit
a77ac4a397
2 files changed
+251
No files matched your search
@@ -0,0 +1,105 @@
|
||||
import kyupy.logic as lg
|
||||
|
||||
|
||||
def test_mvarray():
|
||||
|
||||
# instantiation with shape
|
||||
|
||||
ary = lg.MVArray(4)
|
||||
assert ary.length == 1
|
||||
assert ary.width == 4
|
||||
|
||||
ary = lg.MVArray((3, 2))
|
||||
assert ary.length == 2
|
||||
assert ary.width == 3
|
||||
|
||||
# instantiation with single vector
|
||||
|
||||
ary = lg.MVArray([1, 0, 1])
|
||||
assert ary.length == 1
|
||||
assert ary.width == 3
|
||||
|
||||
ary = lg.MVArray("10X-")
|
||||
assert ary.length == 1
|
||||
assert ary.width == 4
|
||||
|
||||
# instantiation with multiple vectors
|
||||
|
||||
ary = lg.MVArray([[0, 0], [0, 1], [1, 0], [1, 1]])
|
||||
assert ary.length == 4
|
||||
assert ary.width == 2
|
||||
|
||||
ary = lg.MVArray(["000", "001", "110", "---"])
|
||||
assert ary.length == 4
|
||||
assert ary.width == 3
|
||||
|
||||
# casting to 2-valued logic
|
||||
|
||||
ary = lg.MVArray([0, 1, 2, None], m=2)
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.ONE
|
||||
assert ary.data[2] == lg.ZERO
|
||||
assert ary.data[3] == lg.ZERO
|
||||
|
||||
ary = lg.MVArray("0-X1PRFN", m=2)
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.ZERO
|
||||
assert ary.data[2] == lg.ZERO
|
||||
assert ary.data[3] == lg.ONE
|
||||
assert ary.data[4] == lg.ZERO
|
||||
assert ary.data[5] == lg.ONE
|
||||
assert ary.data[6] == lg.ZERO
|
||||
assert ary.data[7] == lg.ONE
|
||||
|
||||
# casting to 4-valued logic
|
||||
|
||||
ary = lg.MVArray([0, 1, 2, None, 'F'])
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.ONE
|
||||
assert ary.data[2] == lg.UNKNOWN
|
||||
assert ary.data[3] == lg.UNASSIGNED
|
||||
assert ary.data[4] == lg.ZERO
|
||||
|
||||
ary = lg.MVArray("0-X1PRFN")
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.UNASSIGNED
|
||||
assert ary.data[2] == lg.UNKNOWN
|
||||
assert ary.data[3] == lg.ONE
|
||||
assert ary.data[4] == lg.ZERO
|
||||
assert ary.data[5] == lg.ONE
|
||||
assert ary.data[6] == lg.ZERO
|
||||
assert ary.data[7] == lg.ONE
|
||||
|
||||
# casting to 8-valued logic
|
||||
|
||||
ary = lg.MVArray([0, 1, 2, None, 'F'], m=8)
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.ONE
|
||||
assert ary.data[2] == lg.UNKNOWN
|
||||
assert ary.data[3] == lg.UNASSIGNED
|
||||
assert ary.data[4] == lg.FALLING
|
||||
|
||||
ary = lg.MVArray("0-X1PRFN", m=8)
|
||||
assert ary.data[0] == lg.ZERO
|
||||
assert ary.data[1] == lg.UNASSIGNED
|
||||
assert ary.data[2] == lg.UNKNOWN
|
||||
assert ary.data[3] == lg.ONE
|
||||
assert ary.data[4] == lg.PPULSE
|
||||
assert ary.data[5] == lg.RISING
|
||||
assert ary.data[6] == lg.FALLING
|
||||
assert ary.data[7] == lg.NPULSE
|
||||
|
||||
# copy constructor and casting
|
||||
|
||||
ary8 = lg.MVArray(ary, m=8)
|
||||
assert ary8.length == 1
|
||||
assert ary8.width == 8
|
||||
assert ary8.data[7] == lg.NPULSE
|
||||
|
||||
ary4 = lg.MVArray(ary, m=4)
|
||||
assert ary4.data[1] == lg.UNASSIGNED
|
||||
assert ary4.data[7] == lg.ONE
|
||||
|
||||
ary2 = lg.MVArray(ary, m=2)
|
||||
assert ary2.data[1] == lg.ZERO
|
||||
assert ary2.data[7] == lg.ONE
|
||||
Reference in new issue
Block a user