Skip to content

Commit 0e66013

Browse files
committed
Add more get-value response validation unit tests
1 parent 89a9604 commit 0e66013

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

unit/solvers/smt2_incremental/smt_response_validation.cpp

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,4 +129,54 @@ TEST_CASE("smt get-value response validation", "[core][smt2_incremental]")
129129
smt_identifier_termt{"a", smt_bit_vector_sortt{8}},
130130
smt_bit_vector_constant_termt{42, 8}}}});
131131
}
132+
SECTION("Multiple valuation pairs.")
133+
{
134+
const response_or_errort<smt_responset> two_pair_response =
135+
validate_smt_response(*smt2irep("((a true) (b false))").parsed_output);
136+
CHECK(
137+
*two_pair_response.get_if_valid() ==
138+
smt_get_value_responset{{smt_get_value_responset::valuation_pairt{
139+
smt_identifier_termt{"a", smt_bool_sortt{}},
140+
smt_bool_literal_termt{true}},
141+
smt_get_value_responset::valuation_pairt{
142+
smt_identifier_termt{"b", smt_bool_sortt{}},
143+
smt_bool_literal_termt{false}}}});
144+
}
145+
SECTION("Invalid terms.")
146+
{
147+
const response_or_errort<smt_responset> empty_value_response =
148+
validate_smt_response(*smt2irep("((a ())))").parsed_output);
149+
CHECK(
150+
*empty_value_response.get_if_error() ==
151+
std::vector<std::string>{"Unrecognised SMT term - \"\"."});
152+
const response_or_errort<smt_responset> pair_value_response =
153+
validate_smt_response(*smt2irep("((a (#xF00D #xBAD))))").parsed_output);
154+
CHECK(
155+
*pair_value_response.get_if_error() ==
156+
std::vector<std::string>{"Unrecognised SMT term - \"\n"
157+
"0: #xF00D\n"
158+
"1: #xBAD\"."});
159+
const response_or_errort<smt_responset> two_pair_value_response =
160+
validate_smt_response(
161+
*smt2irep("((a (#xF00D #xBAD)) (b (#xDEAD #xFA11)))").parsed_output);
162+
CHECK(
163+
*two_pair_value_response.get_if_error() ==
164+
std::vector<std::string>{"Unrecognised SMT term - \"\n"
165+
"0: #xF00D\n"
166+
"1: #xBAD\".",
167+
"Unrecognised SMT term - \"\n"
168+
"0: #xDEAD\n"
169+
"1: #xFA11\"."});
170+
const response_or_errort<smt_responset> empty_descriptor_response =
171+
validate_smt_response(*smt2irep("((() true))").parsed_output);
172+
CHECK(
173+
*empty_descriptor_response.get_if_error() ==
174+
std::vector<std::string>{"Expected identifier, found - \"\"."});
175+
const response_or_errort<smt_responset> empty_pair =
176+
validate_smt_response(*smt2irep("((() ())))").parsed_output);
177+
CHECK(
178+
*empty_pair.get_if_error() ==
179+
std::vector<std::string>{"Expected identifier, found - \"\".",
180+
"Unrecognised SMT term - \"\"."});
181+
}
132182
}

0 commit comments

Comments
 (0)