/ test / unittest_demangle.pass.cpp
unittest_demangle.pass.cpp
 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  
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  
84  int main(int, char**) {
85    testPODSmallVector();
86    return 0;
87  }