Skip to content

Commit

Permalink
Do not rely on simplification
Browse files Browse the repository at this point in the history
  • Loading branch information
cjdrake committed Feb 18, 2015
1 parent 424551a commit 15bf6ec
Showing 1 changed file with 13 additions and 9 deletions.
22 changes: 13 additions & 9 deletions pyeda/boolalg/test/test_bfarray.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,8 +71,8 @@ def test_farray():
# expected <= M slice dimensions, got N
assert_raises(ValueError, X.__getitem__, (2, 2))
sel = exprvars('s', 2)
assert str(X[sel]) == "Or(And(~s[0], ~s[1], x[0]), And(s[0], ~s[1], x[1]), And(~s[0], s[1], x[2]), And(s[0], s[1], x[3]))"
assert str(X[:2][sel[0]]) == "Or(And(~s[0], x[0]), And(s[0], x[1]))"
#assert str(X[sel]) == "Or(And(~s[0], ~s[1], x[0]), And(s[0], ~s[1], x[1]), And(~s[0], s[1], x[2]), And(s[0], s[1], x[3]))"
#assert str(X[:2][sel[0]]) == "Or(And(~s[0], x[0]), And(s[0], x[1]))"
# expected clog2(N) bits
assert_raises(ValueError, X.__getitem__, sel[0])
# slice step not supported
Expand Down Expand Up @@ -210,16 +210,20 @@ def test_farray():
assert_raises(ValueError, X.arsh, -1)

# unary ops
assert str(X.uor()) == "Or(x[0], x[1], x[2], x[3])"
assert str(X.unor()) == "Not(Or(x[0], x[1], x[2], x[3]))"
assert str(X.uand()) == "And(x[0], x[1], x[2], x[3])"
assert str(X.unand()) == "Not(And(x[0], x[1], x[2], x[3]))"
assert str(X.uxor()) == "Xor(x[0], x[1], x[2], x[3])"
assert str(X.uxnor()) == "Not(Xor(x[0], x[1], x[2], x[3]))"
assert X.uor().equivalent(X[0] | X[1] | X[2] | X[3])
assert X.unor().equivalent(~(X[0] | X[1] | X[2] | X[3]))
assert X.uand().equivalent(X[0] & X[1] & X[2] & X[3])
assert X.unand().equivalent(~(X[0] & X[1] & X[2] & X[3]))
assert X.uxor().equivalent(X[0] ^ X[1] ^ X[2] ^ X[3])
assert X.uxnor().equivalent(~(X[0] ^ X[1] ^ X[2] ^ X[3]))

# decode
assert str(farray([], ftype=Expression).decode()) == "farray([1])"
assert str(X[:2].decode()) == "farray([And(~x[0], ~x[1]), And(x[0], ~x[1]), And(~x[0], x[1]), And(x[0], x[1])])"
parts = X[:2].decode()
assert parts[0].equivalent(~X[0] & ~X[1])
assert parts[1].equivalent(X[0] & ~X[1])
assert parts[2].equivalent(~X[0] & X[1])
assert parts[3].equivalent(X[0] & X[1])

def test_dims2shape():
assert_raises(ValueError, exprzeros)
Expand Down

0 comments on commit 15bf6ec

Please sign in to comment.