libcxxabi

libcxxabi mirror with random patches
git clone https://git.neptards.moe/neptards/libcxxabi.git
Log | Files | Refs

unittest_demangle.pass.cpp (1908B)


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