diff options
author | Jonathan Wakely <jwakely@redhat.com> | 2019-05-07 16:30:29 +0100 |
---|---|---|
committer | Jonathan Wakely <redi@gcc.gnu.org> | 2019-05-07 16:30:29 +0100 |
commit | 99f129598901e7bd289261d537bc8e879718b352 (patch) | |
tree | 1dc09b4d1c77da7f0da417ec590b8c036cac71ab | |
parent | 339197c7f32538a4e0e39edf5846ae8a660144a4 (diff) | |
download | gcc-99f129598901e7bd289261d537bc8e879718b352.zip gcc-99f129598901e7bd289261d537bc8e879718b352.tar.gz gcc-99f129598901e7bd289261d537bc8e879718b352.tar.bz2 |
Add test for std::hash<std::error_code>
Copied from 19_diagnostics/error_condition/hash.cc added recently.
* testsuite/19_diagnostics/error_code/hash.cc: New test.
From-SVN: r270951
-rw-r--r-- | libstdc++-v3/ChangeLog | 4 | ||||
-rw-r--r-- | libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc | 50 |
2 files changed, 54 insertions, 0 deletions
diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 411eff1..19f90999 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2019-05-07 Jonathan Wakely <jwakely@redhat.com> + + * testsuite/19_diagnostics/error_code/hash.cc: New test. + 2019-05-06 François Dumont <fdumont@gcc.gnu.org> * python/libstdcxx/v6/printers.py (add_one_template_type_printer): diff --git a/libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc b/libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc new file mode 100644 index 0000000..2014e67 --- /dev/null +++ b/libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc @@ -0,0 +1,50 @@ +// Copyright (C) 2019 Free Software Foundation, Inc. +// +// This file is part of the GNU ISO C++ Library. This library 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, or (at your option) +// any later version. + +// This library 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 library; see the file COPYING3. If not see +// <http://www.gnu.org/licenses/>. + +// { dg-do run { target c++11 } } + +#include <system_error> +#include <testsuite_hooks.h> + +struct error_cat : std::error_category +{ + error_cat(std::string s) : _name(s) { } + std::string _name; + const char* name() const noexcept override { return _name.c_str(); } + std::string message(int) const override { return "error"; } +}; + +void +test01() +{ + std::hash<std::error_code> h; + error_cat kitty("kitty"), moggy("moggy"); + std::error_code cond1(99, kitty); + VERIFY( h(cond1) == h(cond1) ); + std::error_code cond2(99, kitty); + VERIFY( h(cond1) == h(cond2) ); + std::error_code cond3(88, kitty); + VERIFY( h(cond1) != h(cond3) ); + std::error_code cond4(99, moggy); + VERIFY( h(cond1) != h(cond4) ); +} + +int +main() +{ + test01(); +} |