GCC Code Coverage Report
Directory: . Exec Total Coverage
File: test/unit/node/type_node_white.cpp Lines: 49 49 100.0 %
Date: 2021-05-22 Branches: 180 600 30.0 %

Line Exec Source
1
/******************************************************************************
2
 * Top contributors (to current version):
3
 *   Aina Niemetz, Andrew Reynolds
4
 *
5
 * This file is part of the cvc5 project.
6
 *
7
 * Copyright (c) 2009-2021 by the authors listed in the file AUTHORS
8
 * in the top-level source directory and their institutional affiliations.
9
 * All rights reserved.  See the file COPYING in the top-level source
10
 * directory for licensing information.
11
 * ****************************************************************************
12
 *
13
 * White box testing of TypeNode.
14
 */
15
16
#include <iostream>
17
#include <sstream>
18
#include <string>
19
20
#include "expr/node_manager.h"
21
#include "expr/type_node.h"
22
#include "smt/smt_engine.h"
23
#include "test_node.h"
24
25
namespace cvc5 {
26
27
using namespace kind;
28
using namespace context;
29
30
namespace test {
31
32
4
class TestNodeWhiteTypeNode : public TestNode
33
{
34
 protected:
35
2
  void SetUp() override
36
  {
37
2
    TestNode::SetUp();
38
2
    d_smt.reset(new SmtEngine(d_nodeManager.get()));
39
2
  }
40
  std::unique_ptr<SmtEngine> d_smt;
41
};
42
43
10
TEST_F(TestNodeWhiteTypeNode, sub_types)
44
{
45
4
  TypeNode realType = d_nodeManager->realType();
46
4
  TypeNode integerType = d_nodeManager->realType();
47
4
  TypeNode booleanType = d_nodeManager->booleanType();
48
4
  TypeNode arrayType = d_nodeManager->mkArrayType(realType, integerType);
49
4
  TypeNode bvType = d_nodeManager->mkBitVectorType(32);
50
51
4
  Node x = d_nodeManager->mkBoundVar("x", realType);
52
4
  Node xPos = d_nodeManager->mkNode(GT, x, d_nodeManager->mkConst(Rational(0)));
53
4
  TypeNode funtype = d_nodeManager->mkFunctionType(integerType, booleanType);
54
4
  Node lambda = d_nodeManager->mkVar("lambda", funtype);
55
4
  std::vector<Node> formals;
56
2
  formals.push_back(x);
57
2
  d_smt->defineFunction(lambda, formals, xPos);
58
59
2
  ASSERT_FALSE(realType.isComparableTo(booleanType));
60
2
  ASSERT_TRUE(realType.isComparableTo(integerType));
61
2
  ASSERT_TRUE(realType.isComparableTo(realType));
62
2
  ASSERT_FALSE(realType.isComparableTo(arrayType));
63
2
  ASSERT_FALSE(realType.isComparableTo(bvType));
64
65
2
  ASSERT_FALSE(booleanType.isComparableTo(integerType));
66
2
  ASSERT_FALSE(booleanType.isComparableTo(realType));
67
2
  ASSERT_TRUE(booleanType.isComparableTo(booleanType));
68
2
  ASSERT_FALSE(booleanType.isComparableTo(arrayType));
69
2
  ASSERT_FALSE(booleanType.isComparableTo(bvType));
70
71
2
  ASSERT_TRUE(integerType.isComparableTo(realType));
72
2
  ASSERT_TRUE(integerType.isComparableTo(integerType));
73
2
  ASSERT_FALSE(integerType.isComparableTo(booleanType));
74
2
  ASSERT_FALSE(integerType.isComparableTo(arrayType));
75
2
  ASSERT_FALSE(integerType.isComparableTo(bvType));
76
77
2
  ASSERT_FALSE(arrayType.isComparableTo(booleanType));
78
2
  ASSERT_FALSE(arrayType.isComparableTo(integerType));
79
2
  ASSERT_FALSE(arrayType.isComparableTo(realType));
80
2
  ASSERT_TRUE(arrayType.isComparableTo(arrayType));
81
2
  ASSERT_FALSE(arrayType.isComparableTo(bvType));
82
83
2
  ASSERT_FALSE(bvType.isComparableTo(booleanType));
84
2
  ASSERT_FALSE(bvType.isComparableTo(integerType));
85
2
  ASSERT_FALSE(bvType.isComparableTo(realType));
86
2
  ASSERT_FALSE(bvType.isComparableTo(arrayType));
87
2
  ASSERT_TRUE(bvType.isComparableTo(bvType));
88
89
2
  ASSERT_TRUE(realType.getBaseType() == realType);
90
2
  ASSERT_TRUE(integerType.getBaseType() == realType);
91
2
  ASSERT_TRUE(booleanType.getBaseType() == booleanType);
92
2
  ASSERT_TRUE(arrayType.getBaseType() == arrayType);
93
2
  ASSERT_TRUE(bvType.getBaseType() == bvType);
94
}
95
}  // namespace test
96
14602
}  // namespace cvc5