69 lines
1.2 KiB
C++
69 lines
1.2 KiB
C++
#include <catch.hpp>
|
|
|
|
#include <pfor/index/index.h>
|
|
#include <pfor/index/operators.h>
|
|
|
|
TEST_CASE("Index") {
|
|
pfor::Index it;
|
|
pfor::index::Index<3> c3;
|
|
|
|
std::size_t i = 5;
|
|
|
|
SECTION("Index") {
|
|
REQUIRE(it.eval(i) == i);
|
|
}
|
|
|
|
SECTION("Basic operations") {
|
|
SECTION("Plus") {
|
|
REQUIRE((+it).eval(i) == i);
|
|
}
|
|
|
|
SECTION("Minus") {
|
|
REQUIRE((-it).eval(i) == -i);
|
|
}
|
|
|
|
// SECTION("Not") {
|
|
// REQUIRE((!it).eval(i) == !i);
|
|
// }
|
|
|
|
// SECTION("BitNot") {
|
|
// REQUIRE((~it).eval(i) == ~i);
|
|
// }
|
|
|
|
SECTION("Addition") {
|
|
REQUIRE((it+c3).eval(i) == i+3);
|
|
REQUIRE((it+it).eval(i) == i+i);
|
|
}
|
|
|
|
SECTION("Subtraction") {
|
|
REQUIRE((it-c3).eval(i) == i-3);
|
|
REQUIRE((it-it).eval(i) == 0);
|
|
}
|
|
|
|
SECTION("Multiplication") {
|
|
REQUIRE((it*c3).eval(i) == i*3);
|
|
REQUIRE((it*it).eval(i) == i*i);
|
|
}
|
|
|
|
// SECTION("Division") {
|
|
// REQUIRE((it/c3).eval(i) == i/3);
|
|
// REQUIRE((it/it).eval(i) == 1);
|
|
// }
|
|
|
|
// SECTION("Modulo") {
|
|
// REQUIRE((it%c3).eval(i) == i%3);
|
|
// REQUIRE((it%it).eval(i) == 0);
|
|
// }
|
|
|
|
// SECTION("LeftShift") {
|
|
// REQUIRE((it<<c3).eval(i) == i<<3);
|
|
// REQUIRE((it<<it).eval(i) == i<<i);
|
|
// }
|
|
|
|
// SECTION("RightShift") {
|
|
// REQUIRE((it>>c3).eval(i) == i>>3);
|
|
// REQUIRE((it>>it).eval(i) == i>>i);
|
|
// }
|
|
}
|
|
}
|