iterator.cpp 1.2 KB

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