1*9f3f6d7bSStella Laurenzo# RUN: %PYTHON %s
2*9f3f6d7bSStella Laurenzo# Standalone sanity check of context life-cycle.
3*9f3f6d7bSStella Laurenzoimport gc
4*9f3f6d7bSStella Laurenzoimport mlir.ir
5*9f3f6d7bSStella Laurenzo
6*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 0
7*9f3f6d7bSStella Laurenzo
8*9f3f6d7bSStella Laurenzo# Create first context.
9*9f3f6d7bSStella Laurenzoprint("CREATE C1")
10*9f3f6d7bSStella Laurenzoc1 = mlir.ir.Context()
11*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1
12*9f3f6d7bSStella Laurenzoc1_repr = repr(c1)
13*9f3f6d7bSStella Laurenzoprint("C1 = ", c1_repr)
14*9f3f6d7bSStella Laurenzo
15*9f3f6d7bSStella Laurenzoprint("GETTING AGAIN...")
16*9f3f6d7bSStella Laurenzoc2 = c1._get_context_again()
17*9f3f6d7bSStella Laurenzoc2_repr = repr(c2)
18*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1
19*9f3f6d7bSStella Laurenzoassert c1_repr == c2_repr
20*9f3f6d7bSStella Laurenzo
21*9f3f6d7bSStella Laurenzoprint("C2 =", c2)
22*9f3f6d7bSStella Laurenzo
23*9f3f6d7bSStella Laurenzo# Make sure new contexts on constructor.
24*9f3f6d7bSStella Laurenzoprint("CREATE C3")
25*9f3f6d7bSStella Laurenzoc3 = mlir.ir.Context()
26*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 2
27*9f3f6d7bSStella Laurenzoc3_repr = repr(c3)
28*9f3f6d7bSStella Laurenzoprint("C3 =", c3)
29*9f3f6d7bSStella Laurenzoassert c3_repr != c1_repr
30*9f3f6d7bSStella Laurenzoprint("FREE C3")
31*9f3f6d7bSStella Laurenzoc3 = None
32*9f3f6d7bSStella Laurenzogc.collect()
33*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1
34*9f3f6d7bSStella Laurenzo
35*9f3f6d7bSStella Laurenzoprint("Free C1")
36*9f3f6d7bSStella Laurenzoc1 = None
37*9f3f6d7bSStella Laurenzogc.collect()
38*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 1
39*9f3f6d7bSStella Laurenzoprint("Free C2")
40*9f3f6d7bSStella Laurenzoc2 = None
41*9f3f6d7bSStella Laurenzogc.collect()
42*9f3f6d7bSStella Laurenzoassert mlir.ir.Context._get_live_count() == 0
43*9f3f6d7bSStella Laurenzo
44*9f3f6d7bSStella Laurenzo# Create a context, get its capsule and create from capsule.
45*9f3f6d7bSStella Laurenzoc4 = mlir.ir.Context()
46*9f3f6d7bSStella Laurenzoc4_capsule = c4._CAPIPtr
47*9f3f6d7bSStella Laurenzoassert '"mlir.ir.Context._CAPIPtr"' in repr(c4_capsule)
48*9f3f6d7bSStella Laurenzoc5 = mlir.ir.Context._CAPICreate(c4_capsule)
49*9f3f6d7bSStella Laurenzoassert c4 is c5
50