Skip to content

Commit 5a18428

Browse files
committed
Complete unit test of solving count
Because this can now be tested without hitting an `UNREACHABLE`.
1 parent 0fa9a43 commit 5a18428

File tree

1 file changed

+17
-1
lines changed

1 file changed

+17
-1
lines changed

unit/solvers/smt2_incremental/smt2_incremental_decision_procedure.cpp

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include <solvers/smt2_incremental/smt2_incremental_decision_procedure.h>
66
#include <solvers/smt2_incremental/smt_commands.h>
77
#include <solvers/smt2_incremental/smt_core_theory.h>
8+
#include <solvers/smt2_incremental/smt_responses.h>
89
#include <solvers/smt2_incremental/smt_solver_process.h>
910
#include <solvers/smt2_incremental/smt_sorts.h>
1011
#include <solvers/smt2_incremental/smt_terms.h>
@@ -20,6 +21,8 @@
2021
// appropriate overload of `operator<<` where it exists.
2122
#include <solvers/smt2_incremental/smt_to_smt2_string.h>
2223

24+
#include <deque>
25+
2326
class smt_mock_solver_processt : public smt_base_solver_processt
2427
{
2528
public:
@@ -33,9 +36,15 @@ class smt_mock_solver_processt : public smt_base_solver_processt
3336
sent_commands.push_back(smt_command);
3437
}
3538

39+
std::deque<smt_responset> responses;
40+
3641
smt_responset receive_response() override
3742
{
38-
UNREACHABLE;
43+
INVARIANT(
44+
!responses.empty(), "There must be responses remaining for test.");
45+
smt_responset response = responses.front();
46+
responses.pop_front();
47+
return response;
3948
}
4049

4150
std::vector<smt_commandt> sent_commands;
@@ -218,8 +227,15 @@ TEST_CASE(
218227
symbol_tablet symbol_table;
219228
namespacet ns{symbol_table};
220229
auto mock_process = util_make_unique<smt_mock_solver_processt>();
230+
auto &responses = mock_process->responses;
221231
null_message_handlert message_handler;
222232
smt2_incremental_decision_proceduret procedure{
223233
ns, std::move(mock_process), message_handler};
224234
REQUIRE(procedure.get_number_of_solver_calls() == 0);
235+
responses.push_back(smt_check_sat_responset{smt_unsat_responset{}});
236+
procedure();
237+
REQUIRE(procedure.get_number_of_solver_calls() == 1);
238+
responses.push_back(smt_check_sat_responset{smt_unsat_responset{}});
239+
procedure();
240+
REQUIRE(procedure.get_number_of_solver_calls() == 2);
225241
}

0 commit comments

Comments
 (0)