-
Notifications
You must be signed in to change notification settings - Fork 273
/
Copy pathsmt2irep.cpp
61 lines (51 loc) · 1.58 KB
/
smt2irep.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/// Author: Diffblue Ltd.
#include <testing-utils/smt2irep.h>
#include <solvers/smt2/smt2irep.h>
#include <util/message.h>
#include <sstream>
bool operator==(
const smt2_parser_test_resultt &left,
const smt2_parser_test_resultt &right)
{
return left.parsed_output == right.parsed_output &&
left.messages == right.messages;
}
smt2_parser_test_resultt smt2irep(const std::string &input)
{
std::stringstream in_stream(input);
std::stringstream out_stream;
stream_message_handlert message_handler(out_stream);
return {smt2irep(in_stream, message_handler), out_stream.str()};
}
std::ostream &operator<<(
std::ostream &output_stream,
const smt2_parser_test_resultt &test_result)
{
const std::string printed_irep =
test_result.parsed_output.has_value()
? '{' + test_result.parsed_output->pretty(0, 0) + '}'
: "empty optional irep";
output_stream << '{' << printed_irep << ", \"" << test_result.messages
<< "\"}";
return output_stream;
}
smt2_parser_error_containingt::smt2_parser_error_containingt(
std::string expected_error)
: expected_error{std::move(expected_error)}
{
}
bool smt2_parser_error_containingt::match(
const smt2_parser_test_resultt &result) const
{
return !result.parsed_output.has_value() &&
result.messages.find(expected_error) != std::string::npos;
}
std::string smt2_parser_error_containingt::describe() const
{
return "Expecting empty parse tree and \"" + expected_error +
"\" printed to output.";
}
smt2_parser_test_resultt smt2_parser_success(irept parse_tree)
{
return {std::move(parse_tree), ""};
}