]> git.ipfire.org Git - thirdparty/gcc.git/blame - libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
Update copyright years.
[thirdparty/gcc.git] / libstdc++-v3 / testsuite / 21_strings / basic_string / operations / compare / char / 2.cc
CommitLineData
6458742a 1// { dg-do run { target c++17 } }
ca8f2cb1 2
a945c346 3// Copyright (C) 2016-2024 Free Software Foundation, Inc.
ca8f2cb1
VV
4//
5// This file is part of the GNU ISO C++ Library. This library is free
6// software; you can redistribute it and/or modify it under the
7// terms of the GNU General Public License as published by the
8// Free Software Foundation; either version 3, or (at your option)
9// any later version.
10
11// This library is distributed in the hope that it will be useful,
12// but WITHOUT ANY WARRANTY; without even the implied warranty of
13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14// GNU General Public License for more details.
15
16// You should have received a copy of the GNU General Public License along
17// with this library; see the file COPYING3. If not see
18// <http://www.gnu.org/licenses/>.
19
20// [string::compare]
21
f77281b2 22#include <testsuite_string.h>
ca8f2cb1
VV
23#include <testsuite_hooks.h>
24
25void
26test03()
27{
ca8f2cb1 28 std::string_view str1("foobar");
f77281b2 29 __gnu_test::string str2("foobar");
ca8f2cb1
VV
30
31 auto x = str2.compare(str1);
32 VERIFY (x == 0);
33
34 str1 = "bar";
35 x = str2.compare(str1);
36 VERIFY (x > 0);
37
38 str1 = "foobar";
39 str2 = "bar";
40 x = str2.compare(str1);
41 VERIFY (x < 0);
42 x = str2.compare(0, 3, str1, 3, 3);
43 VERIFY (x == 0);
44
45 str1 = "bar";
46 str2 = "foobar";
47 x = str2.compare(3, 3, str1);
48 VERIFY (x == 0);
49}
50
657213f7
JW
51// PR libstdc++/77264
52void
53test04()
54{
f77281b2 55 const __gnu_test::string str("a");
657213f7
JW
56 char c = 'a';
57 int res = str.compare(0, 1, &c, 1);
58 VERIFY ( !res );
59
60 char arr[] = "a";
61 res = str.compare(0, 1, arr, 1);
62 VERIFY ( !res );
63
64 const char carr[] = "a";
65 res = str.compare(0, 1, carr, 1);
66 VERIFY ( !res );
67
68 struct S {
69 operator char*() { return &c; }
70 operator std::string_view() { return "!"; }
71 char c = 'a';
72 };
73
74 res = str.compare(0, 1, S{}, 1);
75 VERIFY ( !res );
76}
77
ca8f2cb1
VV
78int main()
79{
80 test03();
657213f7 81 test04();
ca8f2cb1
VV
82 return 0;
83}