summaryrefslogtreecommitdiff
path: root/test/unit/expr/node_builder_black.h
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/expr/node_builder_black.h')
-rw-r--r--test/unit/expr/node_builder_black.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/unit/expr/node_builder_black.h b/test/unit/expr/node_builder_black.h
index e3883b824..e6f8116fc 100644
--- a/test/unit/expr/node_builder_black.h
+++ b/test/unit/expr/node_builder_black.h
@@ -613,6 +613,37 @@ public:
TS_ASSERT_DIFFERS(astr, cstr);
}
+ void testLeftistBuilding() {
+ NodeBuilder<> nb;
+
+ Node a = d_nm->mkVar(*d_booleanType);
+
+ Node b = d_nm->mkVar(*d_booleanType);
+ Node c = d_nm->mkVar(*d_booleanType);
+
+ Node d = d_nm->mkVar(*d_realType);
+ Node e = d_nm->mkVar(*d_realType);
+
+ nb << a << NOT
+ << b << c << OR
+ << c << a << AND
+ << d << e << ITE;
+
+ Node n = nb;
+ TS_ASSERT_EQUALS(n.getNumChildren(), 3u);
+ TS_ASSERT_EQUALS(n.getType(), *d_realType);
+ TS_ASSERT_EQUALS(n[0].getType(), *d_booleanType);
+ TS_ASSERT_EQUALS(n[1].getType(), *d_realType);
+ TS_ASSERT_EQUALS(n[2].getType(), *d_realType);
+
+ Node nota = d_nm->mkNode(NOT, a);
+ Node nota_or_b_or_c = d_nm->mkNode(OR, nota, b, c);
+ Node n0 = d_nm->mkNode(AND, nota_or_b_or_c, c, a);
+ Node nexpected = d_nm->mkNode(ITE, n0, d, e);
+
+ TS_ASSERT_EQUALS(nexpected, n);
+ }
+
void testConvenienceBuilders() {
Node a = d_nm->mkVar(*d_booleanType);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback