From 99f129598901e7bd289261d537bc8e879718b352 Mon Sep 17 00:00:00 2001 From: Jonathan Wakely Date: Tue, 7 May 2019 16:30:29 +0100 Subject: [PATCH] Add test for std::hash Copied from 19_diagnostics/error_condition/hash.cc added recently. * testsuite/19_diagnostics/error_code/hash.cc: New test. From-SVN: r270951 --- libstdc++-v3/ChangeLog | 4 ++ .../19_diagnostics/error_code/hash.cc | 50 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 411eff1b54f..19f90999584 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,7 @@ +2019-05-07 Jonathan Wakely + + * testsuite/19_diagnostics/error_code/hash.cc: New test. + 2019-05-06 François Dumont * 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 00000000000..2014e676878 --- /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 +// . + +// { dg-do run { target c++11 } } + +#include +#include + +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 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(); +} -- 2.30.2