brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 3f86e9c Raw
90 lines · cpp
1//===----------------------------------------------------------------------===//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-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++0310// ADDITIONAL_COMPILE_FLAGS: -Wno-unused-function11 12#include <cassert>13#include <utility>14 15#include "../src/demangle/ItaniumDemangle.h"16 17void testPODSmallVector() {18  { // {push/pop}_back19    itanium_demangle::PODSmallVector<int, 1> PSV;20    PSV.push_back(0);21    PSV.push_back(1);22    PSV.push_back(2);23    PSV.push_back(3);24    for (int i = 0; i < 4; ++i)25      assert(PSV[i] == i);26    PSV.pop_back();27    for (int i = 0; i < 3; ++i)28      assert(PSV[i] == i);29    PSV.pop_back();30    PSV.pop_back();31    assert(!PSV.empty() && PSV.size() == 1);32    PSV.pop_back();33    assert(PSV.empty() && PSV.size() == 0);34  }35 36  {37    itanium_demangle::PODSmallVector<int, 1> PSV1;38    PSV1.push_back(1);39    PSV1.push_back(2);40    PSV1.push_back(3);41 42    itanium_demangle::PODSmallVector<int, 1> PSV2;43    std::swap(PSV1, PSV2);44    assert(PSV1.size() == 0);45    assert(PSV2.size() == 3);46    int i = 1;47    for (int x : PSV2) {48      assert(x == i);49      ++i;50    }51    assert(i == 4);52    std::swap(PSV1, PSV2);53    assert(PSV1.size() == 3);54    assert(PSV2.size() == 0);55    i = 1;56    for (int x : PSV1) {57      assert(x == i);58      ++i;59    }60    assert(i == 4);61  }62 63  {64    itanium_demangle::PODSmallVector<int, 10> PSV1;65    itanium_demangle::PODSmallVector<int, 10> PSV2;66    PSV1.push_back(0);67    PSV1.push_back(1);68    PSV1.push_back(2);69    assert(PSV1.size() == 3);70    assert(PSV2.size() == 0);71    std::swap(PSV1, PSV2);72    assert(PSV1.size() == 0);73    assert(PSV2.size() == 3);74    int i = 0;75    for (int x : PSV2) {76      assert(x == i);77      ++i;78    }79    for (int x : PSV1) {80      assert(false);81      (void)x;82    }83  }84}85 86int main(int, char**) {87  testPODSmallVector();88  return 0;89}90