iterator.cpp 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #include<__vic/iterator.h>
  2. #include<__vic/defs.h>
  3. #include<iostream>
  4. #include<exception>
  5. #include<cassert>
  6. #include<list>
  7. void run_tests()
  8. {
  9. const int arr[] = { 0, 1, 2 };
  10. assert(__vic::begin(arr) == arr);
  11. assert(__vic::end(arr) == arr + __vic::array_size(arr));
  12. assert(__vic::next(arr) == arr + 1);
  13. assert(__vic::next(arr, 2) == arr + 2);
  14. assert(__vic::prev(__vic::next(arr)) == arr);
  15. assert(__vic::prev(__vic::next(arr, 2), 2) == arr);
  16. const int *p = arr;
  17. __vic::advance(p, __vic::end(arr), 2);
  18. assert(p == arr + 2);
  19. __vic::advance(p, __vic::end(arr), 10);
  20. assert(p == __vic::end(arr));
  21. std::list<int> l(__vic::begin(arr), __vic::end(arr));
  22. assert(l.size() == __vic::array_size(arr));
  23. std::list<int>::iterator it = l.begin();
  24. __vic::advance(it, l.end(), 2);
  25. assert(*it == arr[2]);
  26. __vic::advance(it, l.end(), 10);
  27. assert(it == l.end());
  28. }
  29. int main()
  30. {
  31. try
  32. {
  33. run_tests();
  34. return 0;
  35. }
  36. catch(const std::exception &ex)
  37. {
  38. std::cerr << ex.what() << '\n';
  39. }
  40. return 1;
  41. }