summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/unit/expr/expr_public.h21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/unit/expr/expr_public.h b/test/unit/expr/expr_public.h
index 491f99584..d4a968e96 100644
--- a/test/unit/expr/expr_public.h
+++ b/test/unit/expr/expr_public.h
@@ -345,6 +345,8 @@ public:
void testIsConst() {
/* bool isConst() const; */
+ Debug.on("isConst");
+
TS_ASSERT(!a_bool->isConst());
TS_ASSERT(!b_bool->isConst());
TS_ASSERT(!c_bool_and->isConst());
@@ -352,6 +354,25 @@ public:
TS_ASSERT(plus_op->isConst());
TS_ASSERT(!d_apply_fun_bool->isConst());
TS_ASSERT(!null->isConst());
+
+ // more complicated "constants" exist in datatypes and arrays theories
+ Datatype list("list");
+ DatatypeConstructor consC("cons");
+ consC.addArg("car", d_em->integerType());
+ consC.addArg("cdr", DatatypeSelfType());
+ list.addConstructor(consC);
+ list.addConstructor(DatatypeConstructor("nil"));
+ DatatypeType listType = d_em->mkDatatypeType(list);
+ Expr cons = listType.getDatatype().getConstructor("cons");
+ Expr nil = listType.getDatatype().getConstructor("nil");
+ Expr x = d_em->mkVar("x", d_em->integerType());
+ Expr cons_x_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, x, d_em->mkExpr(APPLY_CONSTRUCTOR, nil));
+ Expr cons_1_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(1)), d_em->mkExpr(APPLY_CONSTRUCTOR, nil));
+ Expr cons_1_cons_2_nil = d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(1)), d_em->mkExpr(APPLY_CONSTRUCTOR, cons, d_em->mkConst(Rational(2)), d_em->mkExpr(APPLY_CONSTRUCTOR, nil)));
+ TS_ASSERT(d_em->mkExpr(APPLY_CONSTRUCTOR, nil).isConst());
+ TS_ASSERT(!cons_x_nil.isConst());
+ TS_ASSERT(cons_1_nil.isConst());
+ TS_ASSERT(cons_1_cons_2_nil.isConst());
}
void testGetConst() {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback