]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libstdc++: Fix VERIFY(idx = 1) bugs in tests
authorJonathan Wakely <jwakely@redhat.com>
Fri, 26 Sep 2025 14:02:43 +0000 (15:02 +0100)
committerJonathan Wakely <redi@gcc.gnu.org>
Sat, 27 Sep 2025 20:17:40 +0000 (21:17 +0100)
These should be checking for equality, not performing assignments.

The tests for from_range on associative containers were actually
checking the wrong thing, but the bug in the is_equal function was
making the incorrect checks pass anyway, because all the values being
used were non-zero, so the result of lhs.id = rhs.id was true, but would
have been false if lhs.id == rhs.id had been used as intended.

libstdc++-v3/ChangeLog:

* testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc:
Fix assignment used instead of equality comparison.
* testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc:
Likewise.
* testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc:
Likewise.
* testsuite/23_containers/map/cons/from_range.cc: Fix is_equal
function and expected value of comparison functions after
construction.
* testsuite/23_containers/multimap/cons/from_range.cc: Likewise.
* testsuite/23_containers/multiset/cons/from_range.cc: Likewise.
* testsuite/23_containers/set/cons/from_range.cc: Likewise.
* testsuite/23_containers/unordered_map/cons/from_range.cc: Fix
is_equal functions.
* testsuite/23_containers/unordered_multimap/cons/from_range.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/cons/from_range.cc:
Likewise.
* testsuite/23_containers/unordered_set/cons/from_range.cc:
Likewise.
* testsuite/25_algorithms/minmax/constrained.cc: Fix assignment
used instead of equality comparison.
* testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc:
Likewise.

20 files changed:
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
libstdc++-v3/testsuite/23_containers/map/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/multimap/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/multiset/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/set/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/unordered_map/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/from_range.cc
libstdc++-v3/testsuite/23_containers/unordered_set/cons/from_range.cc
libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc

index 9fc143c1473bfd3c5d2ef642133d865f6aea89fc..4d2a8ba46c3962490f65a982b796a276bf36ddcd 100644 (file)
@@ -86,7 +86,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( i1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 85d5e6dbbf338f658cb7d5aea68998fd7c568c97..55e39dd9e89a9b0b73401247ea938b306863f680 100644 (file)
@@ -86,7 +86,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( l1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index a698baeab814e59444083c15e66ac2748fcb2140..5b23d6c27b8cae53047d4200c28afafa1c0e5473 100644 (file)
@@ -87,7 +87,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ll1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 47c20ce09585d525411a8515a5b7eab1dd8ae42a..00afc942cdcce6ebd5a327ebdb2c156a2f2dc602 100644 (file)
@@ -86,7 +86,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ul1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index ad81b67af87ac25e3120e1ca044008ab4a508153..f44eb1ddc316264f104ed6bacc5232ffc83528af 100644 (file)
@@ -87,7 +87,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ull1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 88e1da7dff4e11480a2bab79f03acf5b302f0e97..1aec77f6a6985381e2e2ed413e334e7429ff3d33 100644 (file)
@@ -88,7 +88,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( i1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 98388f99f5cec8a869e291f73a7e8f440c39574a..41e9d669774f2f7c1ef144f98538f4baed88551e 100644 (file)
@@ -88,7 +88,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( l1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index d7a49f5cea6fb4e17a9c56be4a9b589f709c8302..5c7a25b3e9e69bf1f69b5fba2dc932114ddd498f 100644 (file)
@@ -88,7 +88,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ll1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index b5537967ceb681a0cc63287db486bc689351de2d..d33289a889311e748dfb38681adc99fd59ef6520 100644 (file)
@@ -88,7 +88,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ul1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 503101f48749457effac96c45480bb71102d35c8..67c96394221261f5a08ff9d3c61f96872e1160f5 100644 (file)
@@ -88,7 +88,7 @@ test01()
     }
   VERIFY( test );
   VERIFY( ull1 == 7 );
-  VERIFY( idx1 = 1 );
+  VERIFY( idx1 == 1 );
 
   try
     {
index 3a9fede04348a26f37d28e53dd377393bfb70783..1453900696504bdd88cadcf84e77dc25bc127f06 100644 (file)
@@ -61,7 +61,7 @@ constexpr bool is_equal(std::less<T>, std::less<U>)
 { return true; }
 
 constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 constexpr auto get0 = [](auto const& t) {
   using std::get;
@@ -103,12 +103,12 @@ do_test(Alloc alloc, Cmp cmp)
   std::map<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
   VERIFY( eq(m4, {a, 4}) );
   VERIFY( m4.get_allocator() == Alloc() );
-  VERIFY( is_equal(m4.key_comp(), Cmp()) );
+  VERIFY( is_equal(m4.key_comp(), cmp) );
 
   std::map<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
   VERIFY( eq(m9, {a, 9}) );
   VERIFY( m9.get_allocator() == alloc );
-  VERIFY( is_equal(m9.key_comp(), cmp) );
+  VERIFY( is_equal(m9.key_comp(), Cmp()) );
 
   std::map<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
   VERIFY( eq(mr, {a, 9}) );
index 5907bab9878cef6b6e5222e2d4cdfa44989ba841..bb79720cdd8ed4ea2115be8e98f1b8a4c6f4cd12 100644 (file)
@@ -61,7 +61,7 @@ constexpr bool is_equal(std::less<T>, std::less<U>)
 { return true; }
 
 constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 constexpr auto get0 = [](auto const& t) {
   using std::get;
@@ -103,12 +103,12 @@ do_test(Alloc alloc, Cmp cmp)
   std::multimap<K, V, Cmp, Alloc> m4(std::from_range, Range(a, a+4), cmp);
   VERIFY( eq(m4, {a, 4}) );
   VERIFY( m4.get_allocator() == Alloc() );
-  VERIFY( is_equal(m4.key_comp(), Cmp()) );
+  VERIFY( is_equal(m4.key_comp(), cmp) );
 
   std::multimap<K, V, Cmp, Alloc> m9(std::from_range, Range(a, a+9), alloc);
   VERIFY( eq(m9, {a, 9}) );
   VERIFY( m9.get_allocator() == alloc );
-  VERIFY( is_equal(m9.key_comp(), cmp) );
+  VERIFY( is_equal(m9.key_comp(), Cmp()) );
 
   std::multimap<K, V, Cmp, Alloc> mr(std::from_range, Range(a, a+14), cmp, alloc);
   VERIFY( eq(mr, {a, 14}) );
index cdba7eb2d63210d3618dc952708912de80cc9b1e..aa9be9c307529bb6a43937921a2d4d2511d51520 100644 (file)
@@ -48,7 +48,7 @@ constexpr bool is_equal(std::less<T>, std::less<U>)
 { return true; }
 
 constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Cmp>
 constexpr void
@@ -82,12 +82,12 @@ do_test(Alloc alloc, Cmp cmp)
   std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
   VERIFY( eq(s4, {a, 4}) );
   VERIFY( s4.get_allocator() == Alloc() );
-  VERIFY( is_equal(s4.key_comp(), Cmp()) );
+  VERIFY( is_equal(s4.key_comp(), cmp) );
 
   std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
   VERIFY( eq(s9, {a, 9}) );
   VERIFY( s9.get_allocator() == alloc );
-  VERIFY( is_equal(s9.key_comp(), cmp) );
+  VERIFY( is_equal(s9.key_comp(), Cmp()) );
 
   std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
   VERIFY( eq(sr, {a, 9}) );
index efde05d729cf51cc8fa32e60b9c3a01c73a1fb87..23922bf285759a5b9fa7000607c1b2809e522341 100644 (file)
@@ -47,7 +47,7 @@ constexpr bool is_equal(std::less<T>, std::less<U>)
 { return true; }
 
 constexpr bool is_equal(StateCmp lhs, StateCmp rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Cmp>
 constexpr void
@@ -81,12 +81,12 @@ do_test(Alloc alloc, Cmp cmp)
   std::set<V, Cmp, Alloc> s4(std::from_range, Range(a, a+4), cmp);
   VERIFY( eq(s4, {a, 4}) );
   VERIFY( s4.get_allocator() == Alloc() );
-  VERIFY( is_equal(s4.key_comp(), Cmp()) );
+  VERIFY( is_equal(s4.key_comp(), cmp) );
 
   std::set<V, Cmp, Alloc> s9(std::from_range, Range(a, a+9), alloc);
   VERIFY( eq(s9, {a, 9}) );
   VERIFY( s9.get_allocator() == alloc );
-  VERIFY( is_equal(s9.key_comp(), cmp) );
+  VERIFY( is_equal(s9.key_comp(), Cmp()) );
 
   std::set<V, Cmp, Alloc> sr(std::from_range, Range(a, a+14), cmp, alloc);
   VERIFY( eq(sr, {a, 9}) );
index 04479a5e54d86f559ba8729a22afbfdca597df34..cad102e959f99e62d63ed5b619cace1f5b9af530 100644 (file)
@@ -100,10 +100,10 @@ constexpr bool is_equal(std::equal_to<T>, std::equal_to<U>)
 { return true; }
 
 constexpr bool is_equal(StateHash lhs, StateHash rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 constexpr bool is_equal(StateEq lhs, StateEq rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Hash, typename Equal>
 constexpr void
index 4567bd8aa914f505e058eb20eb71f80aa57b2435..ab30e3c6761bfadb978f3b0648fdbcb9dd5c76e2 100644 (file)
@@ -114,10 +114,10 @@ constexpr bool is_equal(std::equal_to<T>, std::equal_to<U>)
 { return true; }
 
 constexpr bool is_equal(StateHash lhs, StateHash rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 constexpr bool is_equal(StateEq lhs, StateEq rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Hash, typename Equal>
 constexpr void
index d44598d7d61507a02429e98a660ec784b67f5857..ff0547138323c5a9de7414f8d4beb0dcfbf3f4dd 100644 (file)
@@ -85,11 +85,11 @@ constexpr bool is_equal(std::equal_to<T>, std::equal_to<U>)
 { return true; }
 
 constexpr bool is_equal(StateHash lhs, StateHash rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 
 constexpr bool is_equal(StateEq lhs, StateEq rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Hash, typename Equal>
 constexpr void
index 8259be871f6e65f7c938c7ddd288c59424efe548..e00e2fb6c0eaa85a7d32c6e19e76ddf4c3eab31a 100644 (file)
@@ -84,11 +84,11 @@ constexpr bool is_equal(std::equal_to<T>, std::equal_to<U>)
 { return true; }
 
 constexpr bool is_equal(StateHash lhs, StateHash rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 
 constexpr bool is_equal(StateEq lhs, StateEq rhs)
-{ return lhs.state = rhs.state; }
+{ return lhs.state == rhs.state; }
 
 template<typename Range, typename Alloc, typename Hash, typename Equal>
 constexpr void
index 270fd45132d122b0cf0851905f5ded92cdf3c913..8f8df431467112b59ccac6e7f87748381a9b4783 100644 (file)
@@ -101,26 +101,26 @@ test04()
 
   auto p = ranges::minmax({1,2}, counted_less{});
   VERIFY( counter == 1 );
-  VERIFY( p.min = 1 );
-  VERIFY( p.max = 2 );
+  VERIFY( p.min == 1 );
+  VERIFY( p.max == 2 );
 
   counter = 0;
   p = ranges::minmax({1,2,3}, counted_less{});
   VERIFY( counter == 3 );
-  VERIFY( p.min = 1 );
-  VERIFY( p.max = 3 );
+  VERIFY( p.min == 1 );
+  VERIFY( p.max == 3 );
 
   counter = 0;
   p = ranges::minmax({1,2,3,4,5,6,7,8,9,10}, counted_less{});
   VERIFY( counter <= 15 );
-  VERIFY( p.min = 1 );
-  VERIFY( p.max = 10 );
+  VERIFY( p.min == 1 );
+  VERIFY( p.max == 10 );
 
   counter = 0;
   p = ranges::minmax({10,9,8,7,6,5,4,3,2,1}, counted_less{});
   VERIFY( counter <= 15 );
-  VERIFY( p.min = 1 );
-  VERIFY( p.max = 10 );
+  VERIFY( p.min == 1 );
+  VERIFY( p.max == 10 );
 }
 
 void
index 0f3728299a37e21936c27f168f8dcc65a6e03f25..ee3e84d42d82aa6f65cf03252e7c5849452e41c8 100644 (file)
@@ -36,8 +36,8 @@ void test01()
   tm time1;
   iss >> get_time(&time1, L"%H:%M:%S %Y");
   VERIFY( static_cast<bool>(iss) );
-  VERIFY(time1.tm_hour = 12);
-  VERIFY(time1.tm_min = 1);
+  VERIFY(time1.tm_hour == 12);
+  VERIFY(time1.tm_min == 1);
   VERIFY(time1.tm_sec == 30);
   VERIFY(time1.tm_year == 71);
 }