(root)/
gcc-13.2.0/
libstdc++-v3/
testsuite/
23_containers/
list/
cons/
7.h
       1  // Copyright (C) 2001-2023 Free Software Foundation, Inc.
       2  //
       3  // This file is part of the GNU ISO C++ Library.  This library is free
       4  // software; you can redistribute it and/or modify it under the
       5  // terms of the GNU General Public License as published by the
       6  // Free Software Foundation; either version 3, or (at your option)
       7  // any later version.
       8  
       9  // This library is distributed in the hope that it will be useful,
      10  // but WITHOUT ANY WARRANTY; without even the implied warranty of
      11  // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      12  // GNU General Public License for more details.
      13  
      14  // You should have received a copy of the GNU General Public License along
      15  // with this library; see the file COPYING3.  If not see
      16  // <http://www.gnu.org/licenses/>.
      17  
      18  // 23.2.2.1 list constructors, copy, and assignment
      19  
      20  #include <testsuite_hooks.h>
      21  
      22  // Fill assign
      23  //
      24  // This test verifies the following.
      25  // 23.2.2.1     void assign(size_type n, const T& v)
      26  // 23.2.2       const_iterator begin() const
      27  // 23.2.2       const_iterator end() const
      28  // 23.2.2       size_type size() const
      29  //
      30  template<typename _Tp>
      31  void
      32  cons07()
      33  {
      34    const std::size_t BIG_LIST_SIZE = 11;
      35    const int BIG_INIT_VALUE = 7;
      36    const std::size_t SMALL_LIST_SIZE = 5;
      37    const int SMALL_INIT_VALUE = 17;
      38    std::size_t count;
      39  
      40    typedef _Tp list_type;
      41    typedef typename list_type::const_iterator const_iterator;
      42    const_iterator i;
      43  
      44    list_type list0601;
      45    VERIFY(list0601.size() == 0);
      46  
      47    // make it bigger
      48    list0601.assign(BIG_LIST_SIZE, BIG_INIT_VALUE);
      49    for (i = list0601.begin(), count = 0;
      50         i != list0601.end();
      51         ++i, ++count)
      52      VERIFY(*i == BIG_INIT_VALUE);
      53    VERIFY(count == BIG_LIST_SIZE);
      54    VERIFY(list0601.size() == BIG_LIST_SIZE);
      55  
      56    // make it shrink
      57    list0601.assign(SMALL_LIST_SIZE, SMALL_INIT_VALUE);
      58    for (i = list0601.begin(), count = 0;
      59         i != list0601.end();
      60         ++i, ++count)
      61      VERIFY(*i == SMALL_INIT_VALUE);
      62    VERIFY(count == SMALL_LIST_SIZE);
      63    VERIFY(list0601.size() == SMALL_LIST_SIZE);
      64  }