home *** CD-ROM | disk | FTP | other *** search
/ Computer Shopper 275 / DPCS0111DVD.ISO / Toolkit / Audio-Visual / VirtualDub / Source / VirtualDub-1.9.10-src.7z / src / test / source / TestVector.cpp < prev   
Encoding:
C/C++ Source or Header  |  2009-09-14  |  2.0 KB  |  91 lines

  1. #include <vd2/system/vdstl.h>
  2. #include "test.h"
  3.  
  4. #define CHECK(cond) if (!(cond)) { VDASSERT((cond)); return 5; } else
  5.  
  6. template<class C>
  7. int RunVectorTest(bool checkCapacity) {
  8.     C v;
  9.  
  10.     CHECK(v.empty());
  11.     CHECK(v.size() == 0);
  12.     CHECK(!checkCapacity || v.capacity() == 0);
  13.  
  14.     v.push_back(1);
  15.     CHECK(v[0] == 1);
  16.     CHECK(!v.empty());
  17.     CHECK(v.size() == 1);
  18.  
  19.     v.push_back(2);
  20.     CHECK(v[0] == 1);
  21.     CHECK(v[1] == 2);
  22.     CHECK(!v.empty());
  23.     CHECK(v.size() == 2);
  24.     CHECK(!checkCapacity || v.capacity() >= 2);
  25.  
  26.     v.swap(C());
  27.     CHECK(v.size() == 0);
  28.     v.reserve(2);
  29.     CHECK(v.size() == 0);
  30.     CHECK(!checkCapacity || v.capacity() == 2);
  31.     static const int k[2]={10,11};
  32.     v.assign(k, k+2);
  33.     v.insert(v.begin(), v[1]);
  34.     CHECK(v[0] == 11);
  35.     CHECK(v[1] == 10);
  36.     CHECK(v[2] == 11);
  37.     CHECK(v.size() == 3);
  38.     CHECK(!checkCapacity || v.capacity() >= 3);
  39.  
  40.     // range erase
  41.     v.clear();
  42.     v.push_back(1);
  43.     v.push_back(2);
  44.     v.push_back(3);
  45.     v.erase(v.begin(), v.end());
  46.     CHECK(v.size() == 0);
  47.  
  48.     v.clear();
  49.     v.push_back(1);
  50.     v.push_back(2);
  51.     v.push_back(3);
  52.     v.erase(v.begin() + 1, v.begin() + 1);
  53.     CHECK(v.size() == 3);
  54.     CHECK(v[0] == 1 && v[1] == 2 && v[2] == 3);
  55.  
  56.     v.clear();
  57.     v.push_back(1);
  58.     v.push_back(2);
  59.     v.push_back(3);
  60.     v.erase(v.begin() + 1, v.begin() + 2);
  61.     CHECK(v.size() == 2);
  62.     CHECK(v[0] == 1 && v[1] == 3);
  63.  
  64.     v.clear();
  65.     v.push_back(1);
  66.     v.push_back(2);
  67.     v.push_back(3);
  68.     v.erase(v.begin() + 1, v.begin() + 3);
  69.     CHECK(v.size() == 1);
  70.     CHECK(v[0] == 1);
  71.  
  72.     v.clear();
  73.     v.push_back(1);
  74.     v.push_back(2);
  75.     v.push_back(3);
  76.     v.erase(v.begin() + 0, v.begin() + 2);
  77.     CHECK(v.size() == 1);
  78.     CHECK(v[0] == 3);
  79.  
  80.     return 0;
  81. }
  82.  
  83. DEFINE_TEST(FastVector) {
  84.     int e = RunVectorTest<vdfastvector<int> >(true);
  85.     e += RunVectorTest<vdfastfixedvector<int, 1> >(false);
  86.     e += RunVectorTest<vdfastfixedvector<int, 2> >(false);
  87.     e += RunVectorTest<vdfastfixedvector<int, 4> >(false);
  88.     e += RunVectorTest<vdfastfixedvector<int, 8> >(false);
  89.     return e;
  90. }
  91.