brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 6ad96b2 Raw
129 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// <set>10 11// class multiset12 13// size_type count(const key_type& k) const;14 15#include <set>16#include <cassert>17 18#include "test_macros.h"19#include "min_allocator.h"20#include "private_constructor.h"21 22int main(int, char**) {23  {24    typedef int V;25    typedef std::multiset<int> M;26    {27      typedef M::size_type R;28      V ar[] = {5, 5, 5, 5, 7, 7, 7, 9, 9};29      const M m(ar, ar + sizeof(ar) / sizeof(ar[0]));30      R r = m.count(4);31      assert(r == 0);32      r = m.count(5);33      assert(r == 4);34      r = m.count(6);35      assert(r == 0);36      r = m.count(7);37      assert(r == 3);38      r = m.count(8);39      assert(r == 0);40      r = m.count(9);41      assert(r == 2);42      r = m.count(10);43      assert(r == 0);44    }45  }46#if TEST_STD_VER >= 1147  {48    typedef int V;49    typedef std::multiset<int, std::less<int>, min_allocator<int>> M;50    {51      typedef M::size_type R;52      V ar[] = {5, 5, 5, 5, 7, 7, 7, 9, 9};53      const M m(ar, ar + sizeof(ar) / sizeof(ar[0]));54      R r = m.count(4);55      assert(r == 0);56      r = m.count(5);57      assert(r == 4);58      r = m.count(6);59      assert(r == 0);60      r = m.count(7);61      assert(r == 3);62      r = m.count(8);63      assert(r == 0);64      r = m.count(9);65      assert(r == 2);66      r = m.count(10);67      assert(r == 0);68    }69  }70#endif71#if TEST_STD_VER > 1172  {73    typedef int V;74    typedef std::multiset<int, std::less<>> M;75    typedef M::size_type R;76    V ar[] = {5, 5, 5, 5, 7, 7, 7, 9, 9};77    const M m(ar, ar + sizeof(ar) / sizeof(ar[0]));78    R r = m.count(4);79    assert(r == 0);80    r = m.count(5);81    assert(r == 4);82    r = m.count(6);83    assert(r == 0);84    r = m.count(7);85    assert(r == 3);86    r = m.count(8);87    assert(r == 0);88    r = m.count(9);89    assert(r == 2);90    r = m.count(10);91    assert(r == 0);92  }93 94  {95    typedef PrivateConstructor V;96    typedef std::multiset<V, std::less<>> M;97    typedef M::size_type R;98 99    M m;100    m.insert(V::make(5));101    m.insert(V::make(5));102    m.insert(V::make(5));103    m.insert(V::make(5));104    m.insert(V::make(7));105    m.insert(V::make(7));106    m.insert(V::make(7));107    m.insert(V::make(9));108    m.insert(V::make(9));109 110    R r = m.count(4);111    assert(r == 0);112    r = m.count(5);113    assert(r == 4);114    r = m.count(6);115    assert(r == 0);116    r = m.count(7);117    assert(r == 3);118    r = m.count(8);119    assert(r == 0);120    r = m.count(9);121    assert(r == 2);122    r = m.count(10);123    assert(r == 0);124  }125#endif126 127  return 0;128}129