1 //===----------------------- unittest_demangle.cpp ------------------------===//
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-exception
6 //
7 //===----------------------------------------------------------------------===//
8
9 // UNSUPPORTED: c++03
10
11 #include "../src/cxa_demangle.cpp"
12
13 using namespace __cxxabiv1;
14
testPODSmallVector()15 void testPODSmallVector() {
16 { // {push/pop}_back
17 PODSmallVector<int, 1> PSV;
18 PSV.push_back(0);
19 PSV.push_back(1);
20 PSV.push_back(2);
21 PSV.push_back(3);
22 for (int i = 0; i < 4; ++i)
23 assert(PSV[i] == i);
24 PSV.pop_back();
25 for (int i = 0; i < 3; ++i)
26 assert(PSV[i] == i);
27 PSV.pop_back();
28 PSV.pop_back();
29 assert(!PSV.empty() && PSV.size() == 1);
30 PSV.pop_back();
31 assert(PSV.empty() && PSV.size() == 0);
32 }
33
34 {
35 PODSmallVector<int, 1> PSV1;
36 PSV1.push_back(1);
37 PSV1.push_back(2);
38 PSV1.push_back(3);
39
40 PODSmallVector<int, 1> PSV2;
41 std::swap(PSV1, PSV2);
42 assert(PSV1.size() == 0);
43 assert(PSV2.size() == 3);
44 int i = 1;
45 for (int x : PSV2) {
46 assert(x == i);
47 ++i;
48 }
49 assert(i == 4);
50 std::swap(PSV1, PSV2);
51 assert(PSV1.size() == 3);
52 assert(PSV2.size() == 0);
53 i = 1;
54 for (int x : PSV1) {
55 assert(x == i);
56 ++i;
57 }
58 assert(i == 4);
59 }
60
61 {
62 PODSmallVector<int, 10> PSV1;
63 PODSmallVector<int, 10> PSV2;
64 PSV1.push_back(0);
65 PSV1.push_back(1);
66 PSV1.push_back(2);
67 assert(PSV1.size() == 3);
68 assert(PSV2.size() == 0);
69 std::swap(PSV1, PSV2);
70 assert(PSV1.size() == 0);
71 assert(PSV2.size() == 3);
72 int i = 0;
73 for (int x : PSV2) {
74 assert(x == i);
75 ++i;
76 }
77 for (int x : PSV1) {
78 assert(false);
79 (void)x;
80 }
81 }
82 }
83
main(int,char **)84 int main(int, char**) {
85 testPODSmallVector();
86 return 0;
87 }
88