Skip to content

Commit 2d866c2

Browse files
author
Sonny Martin
committed
Use catch exception macros
1 parent 9ac4f29 commit 2d866c2

File tree

1 file changed

+80
-83
lines changed

1 file changed

+80
-83
lines changed

unit/goto-programs/goto_program_validate.cpp

Lines changed: 80 additions & 83 deletions
Original file line numberDiff line numberDiff line change
@@ -30,44 +30,6 @@ code_function_callt make_void_call(const symbol_exprt &function)
3030
ret.function() = function;
3131
return ret;
3232
}
33-
34-
void validate(
35-
const goto_functionst &goto_functions,
36-
const validation_modet vm,
37-
const goto_model_validation_optionst &goto_model_validation_options)
38-
{
39-
validate_goto_model(goto_functions, vm, goto_model_validation_options);
40-
}
41-
42-
bool test_for_pass(
43-
goto_modelt &goto_model,
44-
const goto_model_validation_optionst goto_model_validation_options)
45-
{
46-
validate(
47-
goto_model.goto_functions,
48-
validation_modet::INVARIANT,
49-
goto_model_validation_options);
50-
return true;
51-
}
52-
53-
bool test_for_failure(
54-
goto_modelt &goto_model,
55-
const goto_model_validation_optionst goto_model_validation_options)
56-
{
57-
bool caught{false};
58-
try
59-
{
60-
validate(
61-
goto_model.goto_functions,
62-
validation_modet::EXCEPTION,
63-
goto_model_validation_options);
64-
}
65-
catch(incorrect_goto_program_exceptiont &e)
66-
{
67-
caught = true;
68-
}
69-
return caught;
70-
}
7133
} // namespace
7234

7335
SCENARIO("validate goto program")
@@ -153,10 +115,13 @@ SCENARIO("validate goto program")
153115

154116
THEN("fail!")
155117
{
156-
goto_model_validation_optionst validation_options;
157-
validation_options.disable_all_checks();
158118
validation_options.entry_point_exists = true;
159-
REQUIRE(test_for_failure(goto_model, validation_options));
119+
REQUIRE_THROWS_AS(
120+
validate_goto_model(
121+
goto_model.goto_functions,
122+
validation_modet::EXCEPTION,
123+
validation_options),
124+
incorrect_goto_program_exceptiont);
160125
}
161126
}
162127

@@ -165,10 +130,11 @@ SCENARIO("validate goto program")
165130
goto_convert(goto_model, null_message_handler);
166131
THEN("pass!")
167132
{
168-
goto_model_validation_optionst validation_options;
169-
validation_options.disable_all_checks();
170133
validation_options.entry_point_exists = true;
171-
REQUIRE(test_for_pass(goto_model, validation_options));
134+
REQUIRE_NOTHROW(validate_goto_model(
135+
goto_model.goto_functions,
136+
validation_modet::EXCEPTION,
137+
validation_options));
172138
}
173139
}
174140

@@ -195,10 +161,13 @@ SCENARIO("validate goto program")
195161

196162
goto_convert(goto_model, null_message_handler);
197163

198-
goto_model_validation_optionst validation_options;
199-
validation_options.disable_all_checks();
200164
validation_options.function_pointer_calls_removed = true;
201-
REQUIRE(test_for_failure(goto_model, validation_options));
165+
REQUIRE_THROWS_AS(
166+
validate_goto_model(
167+
goto_model.goto_functions,
168+
validation_modet::EXCEPTION,
169+
validation_options),
170+
incorrect_goto_program_exceptiont);
202171
}
203172
}
204173

@@ -208,10 +177,11 @@ SCENARIO("validate goto program")
208177
{
209178
goto_convert(goto_model, null_message_handler);
210179

211-
goto_model_validation_optionst validation_options;
212-
validation_options.disable_all_checks();
213180
validation_options.function_pointer_calls_removed = true;
214-
REQUIRE(test_for_pass(goto_model, validation_options));
181+
REQUIRE_NOTHROW(validate_goto_model(
182+
goto_model.goto_functions,
183+
validation_modet::EXCEPTION,
184+
validation_options));
215185
}
216186
}
217187

@@ -228,10 +198,13 @@ SCENARIO("validate goto program")
228198
auto it = function_map.find("f");
229199
it->second.type.return_type() = signedbv_typet{32};
230200

231-
goto_model_validation_optionst validation_options;
232-
validation_options.disable_all_checks();
233201
validation_options.check_returns_removed = true;
234-
REQUIRE(test_for_failure(goto_model, validation_options));
202+
REQUIRE_THROWS_AS(
203+
validate_goto_model(
204+
goto_model.goto_functions,
205+
validation_modet::EXCEPTION,
206+
validation_options),
207+
incorrect_goto_program_exceptiont);
235208
}
236209
}
237210

@@ -252,10 +225,13 @@ SCENARIO("validate goto program")
252225
auto &instructions = it->second.body.instructions;
253226
instructions.insert(instructions.begin(), instruction);
254227

255-
goto_model_validation_optionst validation_options;
256-
validation_options.disable_all_checks();
257228
validation_options.check_returns_removed = true;
258-
REQUIRE(test_for_failure(goto_model, validation_options));
229+
REQUIRE_THROWS_AS(
230+
validate_goto_model(
231+
goto_model.goto_functions,
232+
validation_modet::EXCEPTION,
233+
validation_options),
234+
incorrect_goto_program_exceptiont);
259235
}
260236
}
261237

@@ -287,10 +263,13 @@ SCENARIO("validate goto program")
287263
{
288264
goto_convert(goto_model, null_message_handler);
289265

290-
goto_model_validation_optionst validation_options;
291-
validation_options.disable_all_checks();
292266
validation_options.check_returns_removed = true;
293-
REQUIRE(test_for_failure(goto_model, validation_options));
267+
REQUIRE_THROWS_AS(
268+
validate_goto_model(
269+
goto_model.goto_functions,
270+
validation_modet::EXCEPTION,
271+
validation_options),
272+
incorrect_goto_program_exceptiont);
294273
}
295274
}
296275

@@ -300,10 +279,11 @@ SCENARIO("validate goto program")
300279
{
301280
goto_convert(goto_model, null_message_handler);
302281

303-
goto_model_validation_optionst validation_options;
304-
validation_options.disable_all_checks();
305282
validation_options.check_returns_removed = true;
306-
REQUIRE(test_for_pass(goto_model, validation_options));
283+
REQUIRE_NOTHROW(validate_goto_model(
284+
goto_model.goto_functions,
285+
validation_modet::EXCEPTION,
286+
validation_options));
307287
}
308288
}
309289

@@ -319,10 +299,13 @@ SCENARIO("validate goto program")
319299
auto it = function_map.find("g");
320300
function_map.erase(it);
321301

322-
goto_model_validation_optionst validation_options;
323-
validation_options.disable_all_checks();
324302
validation_options.check_called_functions = true;
325-
REQUIRE(test_for_failure(goto_model, validation_options));
303+
REQUIRE_THROWS_AS(
304+
validate_goto_model(
305+
goto_model.goto_functions,
306+
validation_modet::EXCEPTION,
307+
validation_options),
308+
incorrect_goto_program_exceptiont);
326309
}
327310
}
328311

@@ -336,10 +319,13 @@ SCENARIO("validate goto program")
336319
auto it = function_map.find("f");
337320
function_map.erase(it); // f is no longer in function map
338321

339-
goto_model_validation_optionst validation_options;
340-
validation_options.disable_all_checks();
341322
validation_options.check_called_functions = true;
342-
REQUIRE(test_for_failure(goto_model, validation_options));
323+
REQUIRE_THROWS_AS(
324+
validate_goto_model(
325+
goto_model.goto_functions,
326+
validation_modet::EXCEPTION,
327+
validation_options),
328+
incorrect_goto_program_exceptiont);
343329
}
344330
}
345331

@@ -351,10 +337,11 @@ SCENARIO("validate goto program")
351337
{
352338
goto_convert(goto_model, null_message_handler);
353339

354-
goto_model_validation_optionst validation_options;
355-
validation_options.disable_all_checks();
356340
validation_options.check_called_functions = true;
357-
REQUIRE(test_for_pass(goto_model, validation_options));
341+
REQUIRE_NOTHROW(validate_goto_model(
342+
goto_model.goto_functions,
343+
validation_modet::EXCEPTION,
344+
validation_options));
358345
}
359346
}
360347

@@ -369,10 +356,13 @@ SCENARIO("validate goto program")
369356
it->second.body.instructions.erase(
370357
std::prev(it->second.body.instructions.end()));
371358

372-
goto_model_validation_optionst validation_options;
373-
validation_options.disable_all_checks();
374359
validation_options.check_last_instruction = true;
375-
REQUIRE(test_for_failure(goto_model, validation_options));
360+
REQUIRE_THROWS_AS(
361+
validate_goto_model(
362+
goto_model.goto_functions,
363+
validation_modet::EXCEPTION,
364+
validation_options),
365+
incorrect_goto_program_exceptiont);
376366
}
377367
}
378368

@@ -382,10 +372,11 @@ SCENARIO("validate goto program")
382372
{
383373
goto_convert(goto_model, null_message_handler);
384374

385-
goto_model_validation_optionst validation_options;
386-
validation_options.disable_all_checks();
387375
validation_options.check_last_instruction = true;
388-
REQUIRE(test_for_pass(goto_model, validation_options));
376+
REQUIRE_NOTHROW(validate_goto_model(
377+
goto_model.goto_functions,
378+
validation_modet::EXCEPTION,
379+
validation_options));
389380
}
390381
}
391382

@@ -401,10 +392,13 @@ SCENARIO("validate goto program")
401392
it->second.body.instructions.front().code.source_location();
402393
source_location.make_nil();
403394

404-
goto_model_validation_optionst validation_options;
405-
validation_options.disable_all_checks();
406395
validation_options.check_sourcecode_location = true;
407-
REQUIRE(test_for_failure(goto_model, validation_options));
396+
REQUIRE_THROWS_AS(
397+
validate_goto_model(
398+
goto_model.goto_functions,
399+
validation_modet::EXCEPTION,
400+
validation_options),
401+
incorrect_goto_program_exceptiont);
408402
}
409403
}
410404

@@ -420,10 +414,13 @@ SCENARIO("validate goto program")
420414
it->second.body.instructions.front().source_location;
421415
source_location.make_nil();
422416

423-
goto_model_validation_optionst validation_options;
424-
validation_options.disable_all_checks();
425417
validation_options.check_sourcecode_location = true;
426-
REQUIRE(test_for_failure(goto_model, validation_options));
418+
REQUIRE_THROWS_AS(
419+
validate_goto_model(
420+
goto_model.goto_functions,
421+
validation_modet::EXCEPTION,
422+
validation_options),
423+
incorrect_goto_program_exceptiont);
427424
}
428425
}
429426
}

0 commit comments

Comments
 (0)