From a17cd7c641c34b6c4bd4845a4d4fb590cb6c238c Mon Sep 17 00:00:00 2001 From: Marshall Clow Date: Wed, 15 Nov 2017 01:33:33 +0000 Subject: [PATCH] Added tests for xxx.size() and xxx.empty() for all the sequence containers git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@318244 91177308-0d34-0410-b5e6-96231b3b80d8 --- .../deque/deque.capacity/empty.pass.cpp | 46 ++++++++++++++ .../deque/deque.capacity/size.pass.cpp | 62 +++++++++++++++++++ .../sequences/forwardlist/empty.pass.cpp | 46 ++++++++++++++ .../list/list.capacity/empty.pass.cpp | 46 ++++++++++++++ .../list/list.capacity/size.pass.cpp | 62 +++++++++++++++++++ .../sequences/vector.bool/empty.pass.cpp | 46 ++++++++++++++ .../sequences/vector.bool/size.pass.cpp | 62 +++++++++++++++++++ .../vector/vector.capacity/empty.pass.cpp | 46 ++++++++++++++ .../vector/vector.capacity/size.pass.cpp | 62 +++++++++++++++++++ 9 files changed, 478 insertions(+) create mode 100644 test/std/containers/sequences/deque/deque.capacity/empty.pass.cpp create mode 100644 test/std/containers/sequences/deque/deque.capacity/size.pass.cpp create mode 100644 test/std/containers/sequences/forwardlist/empty.pass.cpp create mode 100644 test/std/containers/sequences/list/list.capacity/empty.pass.cpp create mode 100644 test/std/containers/sequences/list/list.capacity/size.pass.cpp create mode 100644 test/std/containers/sequences/vector.bool/empty.pass.cpp create mode 100644 test/std/containers/sequences/vector.bool/size.pass.cpp create mode 100644 test/std/containers/sequences/vector/vector.capacity/empty.pass.cpp create mode 100644 test/std/containers/sequences/vector/vector.capacity/size.pass.cpp diff --git a/test/std/containers/sequences/deque/deque.capacity/empty.pass.cpp b/test/std/containers/sequences/deque/deque.capacity/empty.pass.cpp new file mode 100644 index 000000000..629a51cab --- /dev/null +++ b/test/std/containers/sequences/deque/deque.capacity/empty.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class deque + +// bool empty() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::deque C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#if TEST_STD_VER >= 11 + { + typedef std::deque> C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#endif +} diff --git a/test/std/containers/sequences/deque/deque.capacity/size.pass.cpp b/test/std/containers/sequences/deque/deque.capacity/size.pass.cpp new file mode 100644 index 000000000..4974fc74d --- /dev/null +++ b/test/std/containers/sequences/deque/deque.capacity/size.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class deque + +// size_type size() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::deque C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#if TEST_STD_VER >= 11 + { + typedef std::deque> C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#endif +} diff --git a/test/std/containers/sequences/forwardlist/empty.pass.cpp b/test/std/containers/sequences/forwardlist/empty.pass.cpp new file mode 100644 index 000000000..1226e68ed --- /dev/null +++ b/test/std/containers/sequences/forwardlist/empty.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class forward_list + +// bool empty() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::forward_list C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_front(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#if TEST_STD_VER >= 11 + { + typedef std::forward_list> C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_front(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#endif +} diff --git a/test/std/containers/sequences/list/list.capacity/empty.pass.cpp b/test/std/containers/sequences/list/list.capacity/empty.pass.cpp new file mode 100644 index 000000000..b564990f2 --- /dev/null +++ b/test/std/containers/sequences/list/list.capacity/empty.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class list + +// bool empty() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::list C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#if TEST_STD_VER >= 11 + { + typedef std::list> C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#endif +} diff --git a/test/std/containers/sequences/list/list.capacity/size.pass.cpp b/test/std/containers/sequences/list/list.capacity/size.pass.cpp new file mode 100644 index 000000000..bddaeb5ac --- /dev/null +++ b/test/std/containers/sequences/list/list.capacity/size.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class list + +// size_type size() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::list C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#if TEST_STD_VER >= 11 + { + typedef std::list> C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#endif +} diff --git a/test/std/containers/sequences/vector.bool/empty.pass.cpp b/test/std/containers/sequences/vector.bool/empty.pass.cpp new file mode 100644 index 000000000..1471c39eb --- /dev/null +++ b/test/std/containers/sequences/vector.bool/empty.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class vector + +// bool empty() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::vector C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(false); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#if TEST_STD_VER >= 11 + { + typedef std::vector> C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(false); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#endif +} diff --git a/test/std/containers/sequences/vector.bool/size.pass.cpp b/test/std/containers/sequences/vector.bool/size.pass.cpp new file mode 100644 index 000000000..a1dcfd69e --- /dev/null +++ b/test/std/containers/sequences/vector.bool/size.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class vector + +// size_type size() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::vector C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(false); + assert(c.size() == 1); + c.push_back(true); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(true); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#if TEST_STD_VER >= 11 + { + typedef std::vector> C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(false); + assert(c.size() == 1); + c.push_back(true); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(true); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#endif +} diff --git a/test/std/containers/sequences/vector/vector.capacity/empty.pass.cpp b/test/std/containers/sequences/vector/vector.capacity/empty.pass.cpp new file mode 100644 index 000000000..d81683133 --- /dev/null +++ b/test/std/containers/sequences/vector/vector.capacity/empty.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class vector + +// bool empty() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::vector C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#if TEST_STD_VER >= 11 + { + typedef std::vector> C; + C c; + ASSERT_NOEXCEPT(c.empty()); + assert(c.empty()); + c.push_back(C::value_type(1)); + assert(!c.empty()); + c.clear(); + assert(c.empty()); + } +#endif +} diff --git a/test/std/containers/sequences/vector/vector.capacity/size.pass.cpp b/test/std/containers/sequences/vector/vector.capacity/size.pass.cpp new file mode 100644 index 000000000..71f531c48 --- /dev/null +++ b/test/std/containers/sequences/vector/vector.capacity/size.pass.cpp @@ -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. +// +//===----------------------------------------------------------------------===// + +// + +// class vector + +// size_type size() const noexcept; + +#include +#include + +#include "test_macros.h" +#include "min_allocator.h" + +int main() +{ + { + typedef std::vector C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#if TEST_STD_VER >= 11 + { + typedef std::vector> C; + C c; + ASSERT_NOEXCEPT(c.size()); + assert(c.size() == 0); + c.push_back(C::value_type(2)); + assert(c.size() == 1); + c.push_back(C::value_type(1)); + assert(c.size() == 2); + c.push_back(C::value_type(3)); + assert(c.size() == 3); + c.erase(c.begin()); + assert(c.size() == 2); + c.erase(c.begin()); + assert(c.size() == 1); + c.erase(c.begin()); + assert(c.size() == 0); + } +#endif +}