File: smt2irep.cpp

package info (click to toggle)
cbmc 6.6.0-4
  • links: PTS
  • area: main
  • in suites: forky, sid, trixie
  • size: 153,852 kB
  • sloc: cpp: 386,459; ansic: 114,466; java: 28,405; python: 6,003; yacc: 4,552; makefile: 4,041; lex: 2,487; xml: 2,388; sh: 2,050; perl: 557; pascal: 184; javascript: 163; ada: 36
file content (61 lines) | stat: -rw-r--r-- 1,623 bytes parent folder | download
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), ""};
}