From fff31a6b396e901dad3d3ac8ce7e463c64685993 Mon Sep 17 00:00:00 2001 From: Jakub Mazurkiewicz Date: Wed, 3 Apr 2024 15:38:18 +0200 Subject: [PATCH] ``: Add death tests --- tests/std/test.lst | 1 + .../std/tests/P2502R2_generator_death/env.lst | 4 ++ .../tests/P2502R2_generator_death/test.cpp | 50 +++++++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 tests/std/tests/P2502R2_generator_death/env.lst create mode 100644 tests/std/tests/P2502R2_generator_death/test.cpp diff --git a/tests/std/test.lst b/tests/std/test.lst index d271be46f78..2d7e7cee3a3 100644 --- a/tests/std/test.lst +++ b/tests/std/test.lst @@ -649,6 +649,7 @@ tests\P2474R2_views_repeat tests\P2474R2_views_repeat_death tests\P2494R2_move_only_range_adaptors tests\P2502R2_generator +tests\P2502R2_generator_death tests\P2502R2_generator_promise tests\P2505R5_monadic_functions_for_std_expected tests\P2510R3_text_formatting_pointers diff --git a/tests/std/tests/P2502R2_generator_death/env.lst b/tests/std/tests/P2502R2_generator_death/env.lst new file mode 100644 index 00000000000..642f530ffad --- /dev/null +++ b/tests/std/tests/P2502R2_generator_death/env.lst @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +RUNALL_INCLUDE ..\usual_latest_matrix.lst diff --git a/tests/std/tests/P2502R2_generator_death/test.cpp b/tests/std/tests/P2502R2_generator_death/test.cpp new file mode 100644 index 00000000000..9fcf309e290 --- /dev/null +++ b/tests/std/tests/P2502R2_generator_death/test.cpp @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +#include +#include + +#include + +std::generator gen() { + co_return; +} + +void test_begin_after_initial_suspend_point() { + auto g = gen(); + (void) g.begin(); + (void) g.begin(); +} + +void test_begin_after_moving_from() { + auto g = gen(); + auto g2 = std::move(g); + (void) g.begin(); +} + +void test_end_iterator_dereference() { + auto g = gen(); + auto i = g.begin(); + (void) *i; +} + +void test_end_iterator_incrementation() { + auto g = gen(); + auto i = g.begin(); + ++i; +} + +int main(int argc, char** argv) { + std_testing::death_test_executive exec; + +#ifdef _DEBUG + exec.add_death_tests({ + test_begin_after_initial_suspend_point, + test_begin_after_moving_from, + test_end_iterator_dereference, + test_end_iterator_incrementation, + }); +#endif // _DEBUG + + return exec.run(argc, argv); +}