本文整理汇总了Python中triton.TritonContext.newSymbolicVariable方法的典型用法代码示例。如果您正苦于以下问题:Python TritonContext.newSymbolicVariable方法的具体用法?Python TritonContext.newSymbolicVariable怎么用?Python TritonContext.newSymbolicVariable使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类triton.TritonContext
的用法示例。
在下文中一共展示了TritonContext.newSymbolicVariable方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: TestSymbolicVariable
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestSymbolicVariable(unittest.TestCase):
"""Testing symbolic variable."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.v0 = self.Triton.newSymbolicVariable(8)
self.v1 = self.Triton.newSymbolicVariable(16)
self.v2 = self.Triton.newSymbolicVariable(32, "test com")
def test_id(self):
"""Test IDs"""
self.assertEqual(self.v0.getId(), 0)
self.assertEqual(self.v1.getId(), 1)
self.assertEqual(self.v2.getId(), 2)
def test_kind(self):
"""Test kind"""
self.assertEqual(self.v0.getKind(), SYMEXPR.UNDEF)
self.assertEqual(self.v1.getKind(), SYMEXPR.UNDEF)
self.assertEqual(self.v2.getKind(), SYMEXPR.UNDEF)
def test_name(self):
"""Test name"""
self.assertEqual(self.v0.getName(), "SymVar_0")
self.assertEqual(self.v1.getName(), "SymVar_1")
self.assertEqual(self.v2.getName(), "SymVar_2")
def test_bitsize(self):
"""Test name"""
self.assertEqual(self.v0.getBitSize(), 8)
self.assertEqual(self.v1.getBitSize(), 16)
self.assertEqual(self.v2.getBitSize(), 32)
def test_comment(self):
"""Test comment"""
self.assertEqual(self.v0.getComment(), "")
self.assertEqual(self.v1.getComment(), "")
self.assertEqual(self.v2.getComment(), "test com")
self.v0.setComment("test v0")
self.v1.setComment("test v1")
self.assertEqual(self.v0.getComment(), "test v0")
self.assertEqual(self.v1.getComment(), "test v1")
self.assertEqual(self.v2.getComment(), "test com")
def test_str(self):
"""Test variable representation"""
self.assertEqual(str(self.v0), "SymVar_0:8")
self.assertEqual(str(self.v1), "SymVar_1:16")
self.assertEqual(str(self.v2), "SymVar_2:32")
示例2: test4
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
def test4():
Triton = TritonContext()
Triton.setArchitecture(ARCH.X86)
astCtxt = Triton.getAstContext()
x = Triton.newSymbolicVariable(8)
c = astCtxt.variable(x) * astCtxt.variable(x) - 1 == 0x20
print 'Test 4:', Triton.getModels(c, 10)
return
示例3: test2
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
def test2():
Triton = TritonContext()
Triton.setArchitecture(ARCH.X86)
astCtxt = Triton.getAstContext()
x = Triton.newSymbolicVariable(32)
c = ((astCtxt.variable(x) ^ 0x40) - 1 == 0x10)
print 'Test 2:', Triton.getModel(c)[0]
return
示例4: test3
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
def test3():
Triton = TritonContext()
Triton.setArchitecture(ARCH.X86)
astCtxt = Triton.getAstContext()
x = Triton.newSymbolicVariable(8)
c = astCtxt.land([
astCtxt.variable(x) * astCtxt.variable(x) - 1 == 0x20,
astCtxt.variable(x) != 0x11
])
print 'Test 3:', Triton.getModel(c)[0]
return
示例5: TestAstReference
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestAstReference(unittest.TestCase):
"""Testing the AST reference."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
def test_ssa_ref(self):
v0 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
v1 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
exp0 = self.Triton.newSymbolicExpression(v0, "exp v1")
exp1 = self.Triton.newSymbolicExpression(v1, "exp v2")
ref0 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0))
ref1 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(1))
ref2 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0)) + 2
ref3 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0)) + self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(1))
self.assertEqual(str(ref0), "ref!0")
self.assertEqual(str(ref1), "ref!1")
self.assertEqual(str(ref2), "(bvadd ref!0 (_ bv2 8))")
self.assertEqual(str(ref3), "(bvadd ref!0 ref!1)")
def test_unroll_ssa_ref(self):
v0 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
v1 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
exp0 = self.Triton.newSymbolicExpression(v0, "exp v1")
exp1 = self.Triton.newSymbolicExpression(v1, "exp v2")
ref0 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0))
ref1 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(1))
ref2 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0)) + 2
ref3 = self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(0)) + self.astCtxt.reference(self.Triton.getSymbolicExpressionFromId(1))
self.assertEqual(str(self.Triton.unrollAst(ref0)), "SymVar_0")
self.assertEqual(str(self.Triton.unrollAst(ref1)), "SymVar_1")
self.assertEqual(str(self.Triton.unrollAst(ref2)), "(bvadd SymVar_0 (_ bv2 8))")
self.assertEqual(str(self.Triton.unrollAst(ref3)), "(bvadd SymVar_0 SymVar_1)")
示例6: test1
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
def test1():
Triton = TritonContext()
Triton.setArchitecture(ARCH.X86)
astCtxt = Triton.getAstContext()
x = Triton.newSymbolicVariable(32)
c = astCtxt.equal(
astCtxt.bvsub(
astCtxt.bvxor(
astCtxt.variable(x),
astCtxt.bv(0x40, 32)
),
astCtxt.bv(1, 32)
),
astCtxt.bv(0x10, 32)
)
print 'Test 1:', Triton.getModel(c)[0]
return
示例7: TestAstConversion
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestAstConversion(unittest.TestCase):
"""Testing the AST conversion Triton <-> z3."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
self.sv1 = self.Triton.newSymbolicVariable(8)
self.sv2 = self.Triton.newSymbolicVariable(8)
self.v1 = self.astCtxt.variable(self.sv1)
self.v2 = self.astCtxt.variable(self.sv2)
def test_binop(self):
"""
Check python binary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
"""
# No simplification available
# This only going to test Triton <-> z3 AST conversions.
binop = [
# Overloaded operators
operator.and_,
operator.add,
operator.sub,
operator.xor,
operator.or_,
operator.mul,
operator.lshift,
operator.rshift,
operator.eq,
operator.ne,
operator.le,
operator.ge,
operator.lt,
operator.gt,
operator.div,
operator.mod,
]
for _ in xrange(100):
cv1 = random.randint(0, 255)
cv2 = random.randint(0, 255)
self.Triton.setConcreteVariableValue(self.sv1, cv1)
self.Triton.setConcreteVariableValue(self.sv2, cv2)
for op in binop:
n = op(self.v1, self.v2)
if op == operator.div and cv2 == 0:
ref = 255
elif op == operator.mod and cv2 == 0:
ref = cv1
else:
ref = op(cv1, cv2) % (2 ** 8)
self.assertEqual(ref, n.evaluate(),
"ref = {} and triton value = {} with operator {}"
" operands were {} and {}".format(ref,
n.evaluate(),
op,
cv1,
cv2))
self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())
def test_unop(self):
"""
Check python unary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
"""
# No simplification available
# This only going to test Triton <-> z3 AST conversions.
unop = [
operator.invert,
operator.neg,
]
for cv1 in xrange(0, 256):
self.Triton.setConcreteVariableValue(self.sv1, cv1)
for op in unop:
n = op(self.v1)
ref = op(cv1) % (2 ** 8)
self.assertEqual(ref, n.evaluate(),
"ref = {} and triton value = {} with operator "
"{} operands was {}".format(ref,
n.evaluate(),
op,
cv1))
self.assertEqual(ref, self.Triton.evaluateAstViaZ3(n))
self.assertEqual(ref, self.Triton.simplify(n, True).evaluate())
def test_smtbinop(self):
"""
Check smt binary operation.
Fuzz int8/uint8 binop values and check triton/z3 and python results.
#.........这里部分代码省略.........
示例8: TestAstRepresentation
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestAstRepresentation(unittest.TestCase):
"""Testing the AST Representation."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
self.v1 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
self.v2 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
self.ref = self.Triton.newSymbolicExpression(self.v1 + self.v2, "ref test")
# Default
self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.SMT)
self.node = [
# Overloaded operators # SMT # Python
((self.v1 & self.v2), "(bvand SymVar_0 SymVar_1)", "(SymVar_0 & SymVar_1)"),
((self.v1 + self.v2), "(bvadd SymVar_0 SymVar_1)", "((SymVar_0 + SymVar_1) & 0xFF)"),
((self.v1 - self.v2), "(bvsub SymVar_0 SymVar_1)", "((SymVar_0 - SymVar_1) & 0xFF)"),
((self.v1 ^ self.v2), "(bvxor SymVar_0 SymVar_1)", "(SymVar_0 ^ SymVar_1)"),
((self.v1 | self.v2), "(bvor SymVar_0 SymVar_1)", "(SymVar_0 | SymVar_1)"),
((self.v1 * self.v2), "(bvmul SymVar_0 SymVar_1)", "((SymVar_0 * SymVar_1) & 0xFF)"),
((self.v1 / self.v2), "(bvudiv SymVar_0 SymVar_1)", "(SymVar_0 / SymVar_1)"),
((self.v1 % self.v2), "(bvurem SymVar_0 SymVar_1)", "(SymVar_0 % SymVar_1)"),
((self.v1 << self.v2), "(bvshl SymVar_0 SymVar_1)", "((SymVar_0 << SymVar_1) & 0xFF)"),
((self.v1 >> self.v2), "(bvlshr SymVar_0 SymVar_1)", "(SymVar_0 >> SymVar_1)"),
((~self.v1), "(bvnot SymVar_0)", "(~(SymVar_0) & 0xFF)"),
((-self.v1), "(bvneg SymVar_0)", "-SymVar_0"),
((self.v1 == self.v2), "(= SymVar_0 SymVar_1)", "(SymVar_0 == SymVar_1)"),
((self.v1 != self.v2), "(not (= SymVar_0 SymVar_1))", "not (SymVar_0 == SymVar_1)"),
((self.v1 <= self.v2), "(bvule SymVar_0 SymVar_1)", "(SymVar_0 <= SymVar_1)"),
((self.v1 >= self.v2), "(bvuge SymVar_0 SymVar_1)", "(SymVar_0 >= SymVar_1)"),
((self.v1 < self.v2), "(bvult SymVar_0 SymVar_1)", "(SymVar_0 < SymVar_1)"),
((self.v1 > self.v2), "(bvugt SymVar_0 SymVar_1)", "(SymVar_0 > SymVar_1)"),
# AST api # SMT # Python
(self.astCtxt.assert_(self.v1 == 0), "(assert (= SymVar_0 (_ bv0 8)))", "assert_((SymVar_0 == 0x0))"),
(self.astCtxt.bv(2, 8), "(_ bv2 8)", "0x2"),
(self.astCtxt.bvashr(self.v1, self.v2), "(bvashr SymVar_0 SymVar_1)", "(SymVar_0 >> SymVar_1)"),
(self.astCtxt.bvfalse(), "(_ bv0 1)", "0x0"),
(self.astCtxt.bvnand(self.v1, self.v2), "(bvnand SymVar_0 SymVar_1)", "(~(SymVar_0 & SymVar_1) & 0xFF)"),
(self.astCtxt.bvnor(self.v1, self.v2), "(bvnor SymVar_0 SymVar_1)", "(~(SymVar_0 | SymVar_1) & 0xFF)"),
(self.astCtxt.bvrol(3, self.v1), "((_ rotate_left 3) SymVar_0)", "rol(0x3, SymVar_0)"),
(self.astCtxt.bvror(2, self.v2), "((_ rotate_right 2) SymVar_1)", "ror(0x2, SymVar_1)"),
(self.astCtxt.bvsdiv(self.v1, self.v2), "(bvsdiv SymVar_0 SymVar_1)", "(SymVar_0 / SymVar_1)"),
(self.astCtxt.bvsge(self.v1, self.v2), "(bvsge SymVar_0 SymVar_1)", "(SymVar_0 >= SymVar_1)"),
(self.astCtxt.bvsgt(self.v1, self.v2), "(bvsgt SymVar_0 SymVar_1)", "(SymVar_0 > SymVar_1)"),
(self.astCtxt.bvsle(self.v1, self.v2), "(bvsle SymVar_0 SymVar_1)", "(SymVar_0 <= SymVar_1)"),
(self.astCtxt.bvslt(self.v1, self.v2), "(bvslt SymVar_0 SymVar_1)", "(SymVar_0 < SymVar_1)"),
(self.astCtxt.bvsmod(self.v1, self.v2), "(bvsmod SymVar_0 SymVar_1)", "(SymVar_0 % SymVar_1)"),
(self.astCtxt.bvsrem(self.v1, self.v2), "(bvsrem SymVar_0 SymVar_1)", "(SymVar_0 % SymVar_1)"),
(self.astCtxt.bvtrue(), "(_ bv1 1)", "0x1"),
(self.astCtxt.bvurem(self.v1, self.v2), "(bvurem SymVar_0 SymVar_1)", "(SymVar_0 % SymVar_1)"),
(self.astCtxt.bvxnor(self.v1, self.v2), "(bvxnor SymVar_0 SymVar_1)", "(~(SymVar_0 ^ SymVar_1) & 0xFF)"),
(self.astCtxt.compound([self.v1, self.v2]), "SymVar_0\nSymVar_1", "SymVar_0\nSymVar_1"),
(self.astCtxt.concat([self.v1, self.v2]), "(concat SymVar_0 SymVar_1)", "((SymVar_0) << 8 | SymVar_1)"),
(self.astCtxt.declare(self.v1), "(declare-fun SymVar_0 () (_ BitVec 8))", "SymVar_0 = 0xdeadbeef"),
(self.astCtxt.distinct(self.v1, self.v2), "(distinct SymVar_0 SymVar_1)", "(SymVar_0 != SymVar_1)"),
(self.astCtxt.equal(self.v1, self.v2), "(= SymVar_0 SymVar_1)", "(SymVar_0 == SymVar_1)"),
(self.astCtxt.extract(4, 2, self.v1), "((_ extract 4 2) SymVar_0)", "((SymVar_0 >> 2) & 0x7)"),
(self.astCtxt.extract(6, 0, self.v1), "((_ extract 6 0) SymVar_0)", "(SymVar_0 & 0x7F)"),
(self.astCtxt.extract(7, 0, self.v1), "SymVar_0", "SymVar_0"),
(self.astCtxt.ite(self.v1 == 1, self.v1, self.v2), "(ite (= SymVar_0 (_ bv1 8)) SymVar_0 SymVar_1)", "(SymVar_0 if (SymVar_0 == 0x1) else SymVar_1)"),
(self.astCtxt.land([self.v1 == 1, self.v2 == 2]), "(and (= SymVar_0 (_ bv1 8)) (= SymVar_1 (_ bv2 8)))", "((SymVar_0 == 0x1) and (SymVar_1 == 0x2))"),
(self.astCtxt.let("alias", self.v1, self.v2), "(let ((alias SymVar_0)) SymVar_1)", "SymVar_1"),
(self.astCtxt.lnot(self.v1 == 0), "(not (= SymVar_0 (_ bv0 8)))", "not (SymVar_0 == 0x0)"),
(self.astCtxt.lor([self.v1 >= 0, self.v2 <= 10]), "(or (bvuge SymVar_0 (_ bv0 8)) (bvule SymVar_1 (_ bv10 8)))", "((SymVar_0 >= 0x0) or (SymVar_1 <= 0xA))"),
(self.astCtxt.reference(self.ref), "ref!0", "ref_0"),
(self.astCtxt.string("test"), "test", "test"),
(self.astCtxt.sx(8, self.v1), "((_ sign_extend 8) SymVar_0)", "sx(0x8, SymVar_0)"),
(self.astCtxt.zx(8, self.v1), "((_ zero_extend 8) SymVar_0)", "SymVar_0"),
]
def test_smt_representation(self):
self.Triton.setAstRepresentationMode(AST_REPRESENTATION.SMT)
self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.SMT)
for n in self.node:
self.assertEqual(str(n[0]), n[1])
def test_python_representation(self):
self.Triton.setAstRepresentationMode(AST_REPRESENTATION.PYTHON)
self.assertEqual(self.Triton.getAstRepresentationMode(), AST_REPRESENTATION.PYTHON)
for n in self.node:
self.assertEqual(str(n[0]), n[2])
示例9: TestAstConversion
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestAstConversion(unittest.TestCase):
"""Testing the AST conversion Triton <-> z3."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
self.sv1 = self.Triton.newSymbolicVariable(8)
self.sv2 = self.Triton.newSymbolicVariable(8)
self.v1 = self.astCtxt.variable(self.sv1)
self.v2 = self.astCtxt.variable(self.sv2)
self.Triton.setConcreteSymbolicVariableValue(self.sv1, 0xaa)
self.Triton.setConcreteSymbolicVariableValue(self.sv2, 0x55)
self.node = [
# Overloaded operators
(self.v1 & self.v2),
(self.v1 + self.v2),
(self.v1 - self.v2),
(self.v1 ^ self.v2),
(self.v1 | self.v2),
(self.v1 * self.v2),
(self.v1 << self.v2),
(self.v1 >> self.v2),
(~self.v1),
(-self.v1),
(self.v1 == self.v2),
(self.v1 != self.v2),
(self.v1 <= self.v2),
(self.v1 >= self.v2),
(self.v1 < self.v2),
(self.v1 > self.v2),
# AST API
self.astCtxt.bvashr(self.v1, self.v2),
self.astCtxt.bvnand(self.v1, self.v2),
self.astCtxt.bvnor(self.v1, self.v2),
self.astCtxt.bvrol(3, self.v1),
self.astCtxt.bvror(2, self.v2),
self.astCtxt.distinct(self.v1, self.v2),
self.astCtxt.equal(self.v1, self.v2),
self.astCtxt.sx(8, self.v1),
self.astCtxt.zx(8, self.v1),
# recent z3 version
#bvsdiv(self.v1, self.v2),
#bvsmod(self.v1, self.v2),
#bvsrem(self.v1, self.v2),
#bvudiv(self.v1, self.v2),
#bvurem(self.v1, self.v2),
]
def test_conversion(self):
# No simplification available
# This only going to test Triton <-> z3 AST conversions.
for n in self.node:
self.assertEqual(n.evaluate(), self.Triton.simplify(n, True).evaluate())
示例10: TestAstDuplication
# 需要导入模块: from triton import TritonContext [as 别名]
# 或者: from triton.TritonContext import newSymbolicVariable [as 别名]
class TestAstDuplication(unittest.TestCase):
"""Testing the AST duplication."""
def setUp(self):
"""Define the arch."""
self.Triton = TritonContext()
self.Triton.setArchitecture(ARCH.X86_64)
self.astCtxt = self.Triton.getAstContext()
self.v1 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
self.v2 = self.astCtxt.variable(self.Triton.newSymbolicVariable(8))
self.ref = self.Triton.newSymbolicExpression(self.v1 + self.v2, "ref test")
self.node = [
# Overloaded operators
(self.v1 & self.v2),
(self.v1 + self.v2),
(self.v1 - self.v2),
(self.v1 ^ self.v2),
(self.v1 | self.v2),
(self.v1 * self.v2),
(self.v1 / self.v2),
(self.v1 % self.v2),
(self.v1 << self.v2),
(self.v1 >> self.v2),
(~self.v1),
(-self.v1),
(self.v1 == self.v2),
(self.v1 != self.v2),
(self.v1 <= self.v2),
(self.v1 >= self.v2),
(self.v1 < self.v2),
(self.v1 > self.v2),
# AST api
self.astCtxt.bv(2, 8),
self.astCtxt.bvashr(self.v1, self.v2),
self.astCtxt.bvfalse(),
self.astCtxt.bvnand(self.v1, self.v2),
self.astCtxt.bvnor(self.v1, self.v2),
self.astCtxt.bvrol(3, self.v1),
self.astCtxt.bvror(2, self.v2),
self.astCtxt.bvsdiv(self.v1, self.v2),
self.astCtxt.bvsge(self.v1, self.v2),
self.astCtxt.bvsgt(self.v1, self.v2),
self.astCtxt.bvsle(self.v1, self.v2),
self.astCtxt.bvslt(self.v1, self.v2),
self.astCtxt.bvsmod(self.v1, self.v2),
self.astCtxt.bvtrue(),
self.astCtxt.bvurem(self.v1, self.v2),
self.astCtxt.bvxnor(self.v1, self.v2),
self.astCtxt.concat([self.v1, self.v2]),
self.astCtxt.distinct(self.v1, self.v2),
self.astCtxt.equal(self.v1, self.v2),
self.astCtxt.extract(4, 2, self.v1),
self.astCtxt.extract(7, 0, self.v1),
self.astCtxt.ite(self.v1 == 2, self.v1, self.v2),
self.astCtxt.land([self.v1 == 1, self.v2 == 2]),
self.astCtxt.let("alias", self.v1, self.v2),
self.astCtxt.lnot(self.v1 == 0),
self.astCtxt.lor([self.v1 >= 0, self.v2 <= 10]),
self.astCtxt.reference(self.ref),
self.astCtxt.string("test"),
self.astCtxt.sx(8, self.v1),
self.astCtxt.zx(8, self.v1),
]
def test_duplication(self):
for n in self.node:
self.assertEqual(n.getHash(), self.astCtxt.duplicate(n).getHash())