import gc
from mlir.ir import *
def run(f):
print("\nTEST:", f.__name__)
f()
gc.collect()
assert Context._get_live_count() == 0
return f
@run
def testIntegerSetCapsule():
with Context() as ctx:
is1 = IntegerSet.get_empty(1, 1, ctx)
capsule = is1._CAPIPtr
print(capsule)
is2 = IntegerSet._CAPICreate(capsule)
assert is1 == is2
assert is2.context is ctx
@run
def testIntegerSetGet():
with Context():
d0 = AffineDimExpr.get(0)
d1 = AffineDimExpr.get(1)
s0 = AffineSymbolExpr.get(0)
c42 = AffineConstantExpr.get(42)
set0 = IntegerSet.get(2, 1, [d0 - d1, s0 - c42], [True, False])
print(set0)
set1 = IntegerSet.get_empty(1, 1)
print(set1)
set2 = set0.get_replaced([d0, AffineSymbolExpr.get(1)], [s0], 1, 2)
print(set2)
try:
IntegerSet.get(2, 1, [], [])
except ValueError as e:
print(e)
try:
IntegerSet.get(2, 1, [d0 - d1], [True, False])
except ValueError as e:
print(e)
try:
IntegerSet.get(2, 1, [0], [True])
except RuntimeError as e:
print(e)
try:
IntegerSet.get(2, 1, [None], [True])
except RuntimeError as e:
print(e)
try:
set0.get_replaced([d0], [s0], 1, 1)
except ValueError as e:
print(e)
try:
set0.get_replaced([d0, d1], [s0, s0], 1, 1)
except ValueError as e:
print(e)
try:
set0.get_replaced([d0, 1], [s0], 1, 1)
except RuntimeError as e:
print(e)
try:
set0.get_replaced([d0, d1], [None], 1, 1)
except RuntimeError as e:
print(e)
@run
def testIntegerSetProperties():
with Context():
d0 = AffineDimExpr.get(0)
d1 = AffineDimExpr.get(1)
s0 = AffineSymbolExpr.get(0)
c42 = AffineConstantExpr.get(42)
set0 = IntegerSet.get(2, 1, [d0 - d1, s0 - c42, s0 - d0], [True, False, False])
print(set0.n_dims)
print(set0.n_symbols)
print(set0.n_inputs)
print(set0.n_equalities)
print(set0.n_inequalities)
print(len(set0.constraints))
for cstr in set0.constraints:
print(cstr.expr, end="")
print(" == 0" if cstr.is_eq else " >= 0")
@run
def testHash():
with Context():
d0 = AffineDimExpr.get(0)
d1 = AffineDimExpr.get(1)
set = IntegerSet.get(2, 0, [d0 + d1], [True])
assert hash(set) == hash(IntegerSet.get(2, 0, [d0 + d1], [True]))
dictionary = dict()
dictionary[set] = 42
assert set in dictionary