• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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