blob: 376725609a3da73d6bb905016743b6dd75736c98 [file] [log] [blame]
Erik Pilkingtonab04a082017-08-09 21:30:57 +00001//===----------------------- unittest_demangle.cpp ------------------------===//
2//
Chandler Carruth57b08b02019-01-19 10:56:40 +00003// 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
Erik Pilkingtonab04a082017-08-09 21:30:57 +00006//
7//===----------------------------------------------------------------------===//
8
Louis Dionne31cbe0f2020-06-01 10:38:23 -04009// UNSUPPORTED: c++03
Erik Pilkington73775252017-08-09 21:51:56 +000010
Erik Pilkingtonab04a082017-08-09 21:30:57 +000011#include "../src/cxa_demangle.cpp"
12
13using namespace __cxxabiv1;
14
15void 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
Louis Dionne504bc072020-10-08 13:36:33 -040084int main(int, char**) {
Erik Pilkingtonab04a082017-08-09 21:30:57 +000085 testPODSmallVector();
Louis Dionne504bc072020-10-08 13:36:33 -040086 return 0;
Erik Pilkingtonab04a082017-08-09 21:30:57 +000087}