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 }