gdb::optional unit tests
authorPedro Alves <palves@redhat.com>
Tue, 18 Apr 2017 20:39:24 +0000 (21:39 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 18 Apr 2017 22:49:33 +0000 (23:49 +0100)
commitd35d19584cf56a50b4833ff9c003597e01022f27
treef6b290e1bf598870c929e5399df235b5e1ce17ae
parent22796e972f18c5601cecb0251222411a352836b6
gdb::optional unit tests

I thought I'd add some unit tests to make sure gdb::optional behaved
correctly, and started writing some, but then thought/realized that
libstdc++ already has extensive testing for C++17 std::optional, which
gdb::optional is a subset of, and thought why bother writing something
from scratch.  So I tried copying over a subset of libstdc++'s tests
(that ones that cover the subset supported by gdb::optional), and was
positively surprised that they mostly work OOTB.  This did help shake
out a few bugs from what I was implementing in the previous patch to
gdb::optional.  Still, it's a good chunk of code being copied over, so
if people dislike this copying/duplication, I can drop this patch.

gdb/ChangeLog:
2017-04-18  Pedro Alves  <palves@redhat.com>

* Makefile.in (SUBDIR_UNITTESTS_SRCS): Add
unittests/optional-selftests.c.
(SUBDIR_UNITTESTS_OBS): Add optional-selftests.o.
* unittests/optional-selftests.c: New file.
* unittests/optional/assignment/1.cc: New file.
* unittests/optional/assignment/2.cc: New file.
* unittests/optional/assignment/3.cc: New file.
* unittests/optional/assignment/4.cc: New file.
* unittests/optional/assignment/5.cc: New file.
* unittests/optional/assignment/6.cc: New file.
* unittests/optional/assignment/7.cc: New file.
* unittests/optional/cons/copy.cc: New file.
* unittests/optional/cons/default.cc: New file.
* unittests/optional/cons/move.cc: New file.
* unittests/optional/cons/value.cc: New file.
* unittests/optional/in_place.cc: New file.
* unittests/optional/observers/1.cc: New file.
* unittests/optional/observers/2.cc: New file.
17 files changed:
gdb/ChangeLog
gdb/Makefile.in
gdb/unittests/optional-selftests.c [new file with mode: 0644]
gdb/unittests/optional/assignment/1.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/2.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/3.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/4.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/5.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/6.cc [new file with mode: 0644]
gdb/unittests/optional/assignment/7.cc [new file with mode: 0644]
gdb/unittests/optional/cons/copy.cc [new file with mode: 0644]
gdb/unittests/optional/cons/default.cc [new file with mode: 0644]
gdb/unittests/optional/cons/move.cc [new file with mode: 0644]
gdb/unittests/optional/cons/value.cc [new file with mode: 0644]
gdb/unittests/optional/in_place.cc [new file with mode: 0644]
gdb/unittests/optional/observers/1.cc [new file with mode: 0644]
gdb/unittests/optional/observers/2.cc [new file with mode: 0644]