cprover
require_expr.cpp
Go to the documentation of this file.
1 /*******************************************************************\
2 
3  Module: Unit test utilities
4 
5  Author: Diffblue Ltd.
6 
7 \*******************************************************************/
8 
14 
15 #include "require_expr.h"
16 
17 #include <testing-utils/catch.hpp>
18 #include <util/arith_tools.h>
19 #include <util/std_code.h>
20 
26 index_exprt require_expr::require_index(const exprt &expr, int expected_index)
27 {
28  REQUIRE(expr.id()==ID_index);
29  const index_exprt &index_expr=to_index_expr(expr);
30  REQUIRE(index_expr.index().id()==ID_constant);
31  const constant_exprt &index_value=to_constant_expr(index_expr.index());
32  mp_integer index_integer_value;
33  to_integer(index_value, index_integer_value);
34  REQUIRE(index_integer_value==expected_index);
35 
36  return index_expr;
37 }
38 
43 {
44  REQUIRE(expr.id()==ID_index);
45  const index_exprt &index_expr=to_index_expr(expr);
46  REQUIRE(index_expr.index().id()==ID_nil);
47  return index_expr;
48 }
49 
57  const exprt &expr, const irep_idt &component_identifier)
58 {
59  REQUIRE(expr.id()==ID_member);
60  const member_exprt &member_expr=to_member_expr(expr);
61  REQUIRE(member_expr.get_component_name()==component_identifier);
62  return member_expr;
63 }
64 
71  const exprt &expr, const irep_idt &symbol_name)
72 {
73  const symbol_exprt &symbol_expr = require_symbol(expr);
74  REQUIRE(symbol_expr.get_identifier()==symbol_name);
75  return symbol_expr;
76 }
77 
82 {
83  REQUIRE(expr.id() == ID_symbol);
84  return to_symbol_expr(expr);
85 }
86 
91 {
92  REQUIRE(expr.id() == ID_typecast);
93  return to_typecast_expr(expr);
94 }
95 
101  const exprt &expr,
102  const irep_idt &side_effect_statement)
103 {
104  REQUIRE(expr.id() == ID_side_effect);
105  const side_effect_exprt &side_effect_expr = to_side_effect_expr(expr);
106  REQUIRE(side_effect_expr.get_statement() == side_effect_statement);
107  return side_effect_expr;
108 }
semantic type conversion
Definition: std_expr.h:2111
BigInt mp_integer
Definition: mp_arith.h:22
const irep_idt & get_identifier() const
Definition: std_expr.h:128
A constant literal expression.
Definition: std_expr.h:4424
side_effect_exprt & to_side_effect_expr(exprt &expr)
Definition: std_code.h:1287
Extract member of struct or union.
Definition: std_expr.h:3871
const irep_idt & id() const
Definition: irep.h:189
Helper functions for requiring specific expressions If the expression is of the wrong type...
member_exprt require_member(const exprt &expr, const irep_idt &component_identifier)
Verify a given exprt is an member_exprt with a component name equal to the component_identifier.
const member_exprt & to_member_expr(const exprt &expr)
Cast a generic exprt to a member_exprt.
Definition: std_expr.h:3955
const symbol_exprt & to_symbol_expr(const exprt &expr)
Cast a generic exprt to a symbol_exprt.
Definition: std_expr.h:210
symbol_exprt require_symbol(const exprt &expr, const irep_idt &symbol_name)
Verify a given exprt is an symbol_exprt with a identifier name equal to the symbol_name.
const constant_exprt & to_constant_expr(const exprt &expr)
Cast a generic exprt to a constant_exprt.
Definition: std_expr.h:4465
side_effect_exprt require_side_effect_expr(const exprt &expr, const irep_idt &side_effect_statement)
Verify a given exprt is a side_effect_exprt with appropriate statement.
index_exprt require_top_index(const exprt &expr)
Verify a given exprt is an index_exprt with a nil value as its index.
Base class for all expressions.
Definition: expr.h:42
const typecast_exprt & to_typecast_expr(const exprt &expr)
Cast a generic exprt to a typecast_exprt.
Definition: std_expr.h:2143
Expression to hold a symbol (variable)
Definition: std_expr.h:90
bool to_integer(const exprt &expr, mp_integer &int_value)
Definition: arith_tools.cpp:17
index_exprt require_index(const exprt &expr, int expected_index)
Verify a given exprt is an index_exprt with a a constant value equal to the expected value...
An expression containing a side effect.
Definition: std_code.h:1238
typecast_exprt require_typecast(const exprt &expr)
Verify a given exprt is a typecast_expr.
const index_exprt & to_index_expr(const exprt &expr)
Cast a generic exprt to an index_exprt.
Definition: std_expr.h:1517
array index operator
Definition: std_expr.h:1462