Still more missing tests - this time for the unordered containers

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@318268 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Marshall Clow
2017-11-15 05:25:36 +00:00
parent 0b07da7c85
commit 2645a49a67
8 changed files with 432 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_map>
// class unordered_map
// bool empty() const noexcept;
#include <unordered_map>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_map<int, double> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1, 1.5));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_map<int, double, std::hash<int>, std::equal_to<int>, min_allocator<std::pair<const int, double>>> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1, 1.5));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#endif
}

View File

@@ -0,0 +1,62 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_map>
// class unordered_map
// size_type size() const noexcept;
#include <unordered_map>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_map<int, double> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2, 1.5));
assert(m.size() == 1);
m.insert(M::value_type(1, 1.5));
assert(m.size() == 2);
m.insert(M::value_type(3, 1.5));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_map<int, double, std::hash<int>, std::equal_to<int>, min_allocator<std::pair<const int, double>>> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2, 1.5));
assert(m.size() == 1);
m.insert(M::value_type(1, 1.5));
assert(m.size() == 2);
m.insert(M::value_type(3, 1.5));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#endif
}

View File

@@ -0,0 +1,46 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_map>
// class unordered_multimap
// bool empty() const noexcept;
#include <unordered_map>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_multimap<int, double> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1, 1.5));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_multimap<int, double, std::hash<int>, std::equal_to<int>, min_allocator<std::pair<const int, double>>> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1, 1.5));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#endif
}

View File

@@ -0,0 +1,62 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_map>
// class unordered_multimap
// size_type size() const noexcept;
#include <unordered_map>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_multimap<int, double> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2, 1.5));
assert(m.size() == 1);
m.insert(M::value_type(1, 1.5));
assert(m.size() == 2);
m.insert(M::value_type(3, 1.5));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_multimap<int, double, std::hash<int>, std::equal_to<int>, min_allocator<std::pair<const int, double>>> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2, 1.5));
assert(m.size() == 1);
m.insert(M::value_type(1, 1.5));
assert(m.size() == 2);
m.insert(M::value_type(3, 1.5));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#endif
}

View File

@@ -0,0 +1,46 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_set>
// class unordered_multiset
// bool empty() const noexcept;
#include <unordered_set>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_multiset<int> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_multiset<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#endif
}

View File

@@ -0,0 +1,62 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_set>
// class unordered_multiset
// size_type size() const noexcept;
#include <unordered_set>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_multiset<int> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2));
assert(m.size() == 1);
m.insert(M::value_type(1));
assert(m.size() == 2);
m.insert(M::value_type(3));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_multiset<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2));
assert(m.size() == 1);
m.insert(M::value_type(1));
assert(m.size() == 2);
m.insert(M::value_type(3));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#endif
}

View File

@@ -0,0 +1,46 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_set>
// class unordered_set
// bool empty() const noexcept;
#include <unordered_set>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_set<int> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_set<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> M;
M m;
ASSERT_NOEXCEPT(m.empty());
assert(m.empty());
m.insert(M::value_type(1));
assert(!m.empty());
m.clear();
assert(m.empty());
}
#endif
}

View File

@@ -0,0 +1,62 @@
//===----------------------------------------------------------------------===//
//
// The LLVM Compiler Infrastructure
//
// This file is dual licensed under the MIT and the University of Illinois Open
// Source Licenses. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
// <unordered_set>
// class unordered_set
// size_type size() const noexcept;
#include <unordered_set>
#include <cassert>
#include "test_macros.h"
#include "min_allocator.h"
int main()
{
{
typedef std::unordered_set<int> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2));
assert(m.size() == 1);
m.insert(M::value_type(1));
assert(m.size() == 2);
m.insert(M::value_type(3));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#if TEST_STD_VER >= 11
{
typedef std::unordered_set<int, std::hash<int>, std::equal_to<int>, min_allocator<int>> M;
M m;
ASSERT_NOEXCEPT(m.size());
assert(m.size() == 0);
m.insert(M::value_type(2));
assert(m.size() == 1);
m.insert(M::value_type(1));
assert(m.size() == 2);
m.insert(M::value_type(3));
assert(m.size() == 3);
m.erase(m.begin());
assert(m.size() == 2);
m.erase(m.begin());
assert(m.size() == 1);
m.erase(m.begin());
assert(m.size() == 0);
}
#endif
}