brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.0 KiB · c75be73 Raw
96 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// <unordered_set>10 11// template <class Value, class Hash = hash<Value>, class Pred = equal_to<Value>,12//           class Alloc = allocator<Value>>13// class unordered_multiset14 15// iterator       begin();16// iterator       end();17// const_iterator begin()  const;18// const_iterator end()    const;19// const_iterator cbegin() const;20// const_iterator cend()   const;21 22#include <unordered_set>23#include <cassert>24#include <cstddef>25 26#include "test_macros.h"27#include "min_allocator.h"28 29int main(int, char**) {30  {31    typedef std::unordered_multiset<int> C;32    typedef int P;33    P a[] = {P(1), P(2), P(3), P(4), P(1), P(2)};34    C c(a, a + sizeof(a) / sizeof(a[0]));35    assert(c.bucket_count() >= 7);36    assert(c.size() == 6);37    assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());38    assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());39    C::iterator i;40  }41  {42    typedef std::unordered_multiset<int> C;43    typedef int P;44    P a[] = {P(1), P(2), P(3), P(4), P(1), P(2)};45    const C c(a, a + sizeof(a) / sizeof(a[0]));46    assert(c.bucket_count() >= 7);47    assert(c.size() == 6);48    assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());49    assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());50    C::const_iterator i;51  }52#if TEST_STD_VER >= 1153  {54    typedef std::unordered_multiset<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> C;55    typedef int P;56    P a[] = {P(1), P(2), P(3), P(4), P(1), P(2)};57    C c(a, a + sizeof(a) / sizeof(a[0]));58    assert(c.bucket_count() >= 7);59    assert(c.size() == 6);60    assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());61    assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());62    C::iterator i;63  }64  {65    typedef std::unordered_multiset<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> C;66    typedef int P;67    P a[] = {P(1), P(2), P(3), P(4), P(1), P(2)};68    const C c(a, a + sizeof(a) / sizeof(a[0]));69    assert(c.bucket_count() >= 7);70    assert(c.size() == 6);71    assert(static_cast<std::size_t>(std::distance(c.begin(), c.end())) == c.size());72    assert(static_cast<std::size_t>(std::distance(c.cbegin(), c.cend())) == c.size());73    C::const_iterator i;74  }75#endif76#if TEST_STD_VER > 1177  { // N3644 testing78    typedef std::unordered_multiset<int> C;79    C::iterator ii1{}, ii2{};80    C::iterator ii4 = ii1;81    C::const_iterator cii{};82    assert(ii1 == ii2);83    assert(ii1 == ii4);84 85    assert(!(ii1 != ii2));86 87    assert((ii1 == cii));88    assert((cii == ii1));89    assert(!(ii1 != cii));90    assert(!(cii != ii1));91  }92#endif93 94  return 0;95}96