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 / TestDeque.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-14  |  1.8 KB  |  86 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. DEFINE_TEST(FastDeque) {
  7.     vdfastdeque<int> v;
  8.  
  9.     CHECK(v.empty());
  10.     CHECK(v.size() == 0);
  11.  
  12.     v.push_back(1);
  13.     CHECK(v[0] == 1);
  14.     CHECK(!v.empty());
  15.     CHECK(v.size() == 1);
  16.  
  17.     v.push_back(2);
  18.     CHECK(v[0] == 1);
  19.     CHECK(v[1] == 2);
  20.     CHECK(!v.empty());
  21.     CHECK(v.size() == 2);
  22.  
  23.     v.clear();
  24.     CHECK(v.empty());
  25.     CHECK(v.size() == 0);
  26.  
  27.     for(int i=0; i<128; ++i) {
  28.         v.push_back(i);
  29.         CHECK(!v.empty());
  30.         CHECK(v.size() == i + 1);
  31.         CHECK(v.front() == 0);
  32.         CHECK(v.back() == i);
  33.  
  34.         vdfastdeque<int>::iterator it(v.begin());
  35.         vdfastdeque<int>::const_iterator it2(static_cast<const vdfastdeque<int>&>(v).begin());
  36.         for(int j=0; j<=i; ++j) {
  37.             CHECK(*it == j);
  38.             CHECK(*it2 == j);
  39.             ++it;
  40.             ++it2;
  41.         }
  42.  
  43.         vdfastdeque<int>::iterator itEnd(v.end());
  44.         vdfastdeque<int>::const_iterator it2End(static_cast<const vdfastdeque<int>&>(v).end());
  45.         CHECK(it == itEnd);
  46.         CHECK(it2 == it2End);
  47.         CHECK(it == it2End);
  48.         CHECK(it2 == itEnd);
  49.     }
  50.  
  51.     for(int i=0; i<128; ++i) {
  52.         vdfastdeque<int>::iterator it(v.begin());
  53.         vdfastdeque<int>::const_iterator it2(static_cast<const vdfastdeque<int>&>(v).begin());
  54.         for(int j=0; j<128-i; ++j) {
  55.             CHECK(*it == i+j);
  56.             CHECK(*it2 == i+j);
  57.             ++it;
  58.             ++it2;
  59.         }
  60.  
  61.         vdfastdeque<int>::iterator itEnd(v.end());
  62.         vdfastdeque<int>::const_iterator it2End(static_cast<const vdfastdeque<int>&>(v).end());
  63.         CHECK(it == itEnd);
  64.         CHECK(it2 == it2End);
  65.         CHECK(it == it2End);
  66.         CHECK(it2 == itEnd);
  67.  
  68.         for(int j=127-i; j>=0; --j) {
  69.             CHECK(v[j] == i+j);
  70.         }
  71.  
  72.         CHECK(!v.empty());
  73.         CHECK(v.size() == 128 - i);
  74.         CHECK(v.front() == i);
  75.         CHECK(v.back() == 127);
  76.         v.pop_front();
  77.     }
  78.  
  79.     CHECK(v.empty());
  80.     CHECK(v.size() == 0);
  81.     CHECK(v.begin() == v.end());
  82.  
  83.     return 0;
  84. }
  85.  
  86.