xref: /aosp_15_r20/external/libcxxabi/test/unittest_demangle.pass.cpp (revision c05d8e5dc3e10f6ce4317e8bc22cc4a25f55fa94)
1*c05d8e5dSAndroid Build Coastguard Worker //===----------------------- unittest_demangle.cpp ------------------------===//
2*c05d8e5dSAndroid Build Coastguard Worker //
3*c05d8e5dSAndroid Build Coastguard Worker //                     The LLVM Compiler Infrastructure
4*c05d8e5dSAndroid Build Coastguard Worker //
5*c05d8e5dSAndroid Build Coastguard Worker // This file is dual licensed under the MIT and the University of Illinois Open
6*c05d8e5dSAndroid Build Coastguard Worker // Source Licenses. See LICENSE.TXT for details.
7*c05d8e5dSAndroid Build Coastguard Worker //
8*c05d8e5dSAndroid Build Coastguard Worker //===----------------------------------------------------------------------===//
9*c05d8e5dSAndroid Build Coastguard Worker 
10*c05d8e5dSAndroid Build Coastguard Worker // UNSUPPORTED: c++98, c++03
11*c05d8e5dSAndroid Build Coastguard Worker 
12*c05d8e5dSAndroid Build Coastguard Worker #include "../src/cxa_demangle.cpp"
13*c05d8e5dSAndroid Build Coastguard Worker 
14*c05d8e5dSAndroid Build Coastguard Worker using namespace __cxxabiv1;
15*c05d8e5dSAndroid Build Coastguard Worker 
testPODSmallVector()16*c05d8e5dSAndroid Build Coastguard Worker void testPODSmallVector() {
17*c05d8e5dSAndroid Build Coastguard Worker   { // {push/pop}_back
18*c05d8e5dSAndroid Build Coastguard Worker     PODSmallVector<int, 1> PSV;
19*c05d8e5dSAndroid Build Coastguard Worker     PSV.push_back(0);
20*c05d8e5dSAndroid Build Coastguard Worker     PSV.push_back(1);
21*c05d8e5dSAndroid Build Coastguard Worker     PSV.push_back(2);
22*c05d8e5dSAndroid Build Coastguard Worker     PSV.push_back(3);
23*c05d8e5dSAndroid Build Coastguard Worker     for (int i = 0; i < 4; ++i)
24*c05d8e5dSAndroid Build Coastguard Worker       assert(PSV[i] == i);
25*c05d8e5dSAndroid Build Coastguard Worker     PSV.pop_back();
26*c05d8e5dSAndroid Build Coastguard Worker     for (int i = 0; i < 3; ++i)
27*c05d8e5dSAndroid Build Coastguard Worker       assert(PSV[i] == i);
28*c05d8e5dSAndroid Build Coastguard Worker     PSV.pop_back();
29*c05d8e5dSAndroid Build Coastguard Worker     PSV.pop_back();
30*c05d8e5dSAndroid Build Coastguard Worker     assert(!PSV.empty() && PSV.size() == 1);
31*c05d8e5dSAndroid Build Coastguard Worker     PSV.pop_back();
32*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV.empty() && PSV.size() == 0);
33*c05d8e5dSAndroid Build Coastguard Worker   }
34*c05d8e5dSAndroid Build Coastguard Worker 
35*c05d8e5dSAndroid Build Coastguard Worker   {
36*c05d8e5dSAndroid Build Coastguard Worker     PODSmallVector<int, 1> PSV1;
37*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(1);
38*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(2);
39*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(3);
40*c05d8e5dSAndroid Build Coastguard Worker 
41*c05d8e5dSAndroid Build Coastguard Worker     PODSmallVector<int, 1> PSV2;
42*c05d8e5dSAndroid Build Coastguard Worker     std::swap(PSV1, PSV2);
43*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV1.size() == 0);
44*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV2.size() == 3);
45*c05d8e5dSAndroid Build Coastguard Worker     int i = 1;
46*c05d8e5dSAndroid Build Coastguard Worker     for (int x : PSV2) {
47*c05d8e5dSAndroid Build Coastguard Worker       assert(x == i);
48*c05d8e5dSAndroid Build Coastguard Worker       ++i;
49*c05d8e5dSAndroid Build Coastguard Worker     }
50*c05d8e5dSAndroid Build Coastguard Worker     assert(i == 4);
51*c05d8e5dSAndroid Build Coastguard Worker     std::swap(PSV1, PSV2);
52*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV1.size() == 3);
53*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV2.size() == 0);
54*c05d8e5dSAndroid Build Coastguard Worker     i = 1;
55*c05d8e5dSAndroid Build Coastguard Worker     for (int x : PSV1) {
56*c05d8e5dSAndroid Build Coastguard Worker       assert(x == i);
57*c05d8e5dSAndroid Build Coastguard Worker       ++i;
58*c05d8e5dSAndroid Build Coastguard Worker     }
59*c05d8e5dSAndroid Build Coastguard Worker     assert(i == 4);
60*c05d8e5dSAndroid Build Coastguard Worker   }
61*c05d8e5dSAndroid Build Coastguard Worker 
62*c05d8e5dSAndroid Build Coastguard Worker   {
63*c05d8e5dSAndroid Build Coastguard Worker     PODSmallVector<int, 10> PSV1;
64*c05d8e5dSAndroid Build Coastguard Worker     PODSmallVector<int, 10> PSV2;
65*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(0);
66*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(1);
67*c05d8e5dSAndroid Build Coastguard Worker     PSV1.push_back(2);
68*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV1.size() == 3);
69*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV2.size() == 0);
70*c05d8e5dSAndroid Build Coastguard Worker     std::swap(PSV1, PSV2);
71*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV1.size() == 0);
72*c05d8e5dSAndroid Build Coastguard Worker     assert(PSV2.size() == 3);
73*c05d8e5dSAndroid Build Coastguard Worker     int i = 0;
74*c05d8e5dSAndroid Build Coastguard Worker     for (int x : PSV2) {
75*c05d8e5dSAndroid Build Coastguard Worker       assert(x == i);
76*c05d8e5dSAndroid Build Coastguard Worker       ++i;
77*c05d8e5dSAndroid Build Coastguard Worker     }
78*c05d8e5dSAndroid Build Coastguard Worker     for (int x : PSV1) {
79*c05d8e5dSAndroid Build Coastguard Worker       assert(false);
80*c05d8e5dSAndroid Build Coastguard Worker       (void)x;
81*c05d8e5dSAndroid Build Coastguard Worker     }
82*c05d8e5dSAndroid Build Coastguard Worker   }
83*c05d8e5dSAndroid Build Coastguard Worker }
84*c05d8e5dSAndroid Build Coastguard Worker 
main()85*c05d8e5dSAndroid Build Coastguard Worker int main() {
86*c05d8e5dSAndroid Build Coastguard Worker   testPODSmallVector();
87*c05d8e5dSAndroid Build Coastguard Worker }
88