brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · 9c6ce28 Raw
71 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// template <class _Iterator>10// struct __bounded_iter;11//12// Comparison operators13 14#include <concepts>15#include <__cxx03/__iterator/bounded_iter.h>16 17#include "test_iterators.h"18#include "test_macros.h"19 20template <class Iter>21TEST_CONSTEXPR_CXX14 bool tests() {22  int array[]                           = {0, 1, 2, 3, 4};23  int* b                                = array + 0;24  int* e                                = array + 5;25  std::__bounded_iter<Iter> const iter1 = std::__make_bounded_iter(Iter(b), Iter(b), Iter(e));26  std::__bounded_iter<Iter> const iter2 = std::__make_bounded_iter(Iter(e), Iter(b), Iter(e));27 28  // operator==29  {30    assert(iter1 == iter1);31    assert(!(iter1 == iter2));32  }33  // operator!=34  {35    assert(iter1 != iter2);36    assert(!(iter1 != iter1));37  }38  // operator<39  {40    assert(iter1 < iter2);41    assert(!(iter2 < iter1));42    assert(!(iter1 < iter1));43  }44  // operator>45  {46    assert(iter2 > iter1);47    assert(!(iter1 > iter2));48    assert(!(iter1 > iter1));49  }50  // operator<=51  {52    assert(iter1 <= iter2);53    assert(!(iter2 <= iter1));54    assert(iter1 <= iter1);55  }56  // operator>=57  {58    assert(iter2 >= iter1);59    assert(!(iter1 >= iter2));60    assert(iter1 >= iter1);61  }62 63  return true;64}65 66int main(int, char**) {67  tests<int*>();68 69  return 0;70}71