|  | /* Self tests for optional for GDB, the GNU debugger. | 
|  |  | 
|  | Copyright (C) 2017-2022 Free Software Foundation, Inc. | 
|  |  | 
|  | This file is part of GDB. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 3 of the License, or | 
|  | (at your option) any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | GNU General Public License for more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program.  If not, see <http://www.gnu.org/licenses/>.  */ | 
|  |  | 
|  | #include "defs.h" | 
|  | #include "gdbsupport/selftest.h" | 
|  | #include "gdbsupport/gdb_optional.h" | 
|  |  | 
|  | /* Used by the included .cc files below.  Included here because the | 
|  | included test files are wrapped in a namespace.  */ | 
|  | #include <vector> | 
|  | #include <string> | 
|  | #include <memory> | 
|  |  | 
|  | /* libstdc++'s testsuite uses VERIFY.  */ | 
|  | #define VERIFY SELF_CHECK | 
|  |  | 
|  | /* Used to disable testing features not supported by | 
|  | gdb::optional.  */ | 
|  | #define GDB_OPTIONAL | 
|  |  | 
|  | namespace selftests { | 
|  | namespace optional { | 
|  |  | 
|  | /* The actual tests live in separate files, which were originally | 
|  | copied over from libstdc++'s testsuite.  To preserve the structure | 
|  | and help with comparison with the original tests, the file names | 
|  | have been preserved, and only minimal modification was done to have | 
|  | them compile against gdb::optional instead of std::optional: | 
|  |  | 
|  | - std::optional->gdb:optional, etc. | 
|  | - ATTRIBUTE_UNUSED in a few places | 
|  | - wrap each file in a namespace so they can all be compiled as a | 
|  | single unit. | 
|  | - libstdc++'s license and formatting style was preserved. | 
|  | */ | 
|  |  | 
|  | #include "optional/assignment/1.cc" | 
|  | #include "optional/assignment/2.cc" | 
|  | #include "optional/assignment/3.cc" | 
|  | #include "optional/assignment/4.cc" | 
|  | #include "optional/assignment/5.cc" | 
|  | #include "optional/assignment/6.cc" | 
|  | #include "optional/assignment/7.cc" | 
|  | #include "optional/cons/copy.cc" | 
|  | #include "optional/cons/default.cc" | 
|  | #include "optional/cons/move.cc" | 
|  | #include "optional/cons/value.cc" | 
|  | #include "optional/in_place.cc" | 
|  | #include "optional/observers/1.cc" | 
|  | #include "optional/observers/2.cc" | 
|  |  | 
|  | static void | 
|  | run_tests () | 
|  | { | 
|  | assign_1::test (); | 
|  | assign_2::test (); | 
|  | assign_3::test (); | 
|  | assign_4::test (); | 
|  | assign_5::test (); | 
|  | assign_6::test (); | 
|  | assign_7::test (); | 
|  | cons_copy::test (); | 
|  | cons_default::test (); | 
|  | cons_move::test (); | 
|  | cons_value::test (); | 
|  | in_place::test (); | 
|  | observers_1::test (); | 
|  | observers_2::test (); | 
|  | } | 
|  |  | 
|  | } /* namespace optional */ | 
|  | } /* namespace selftests */ | 
|  |  | 
|  | void _initialize_optional_selftests (); | 
|  | void | 
|  | _initialize_optional_selftests () | 
|  | { | 
|  | selftests::register_test ("optional", selftests::optional::run_tests); | 
|  | } |