pfor/tests/index/index.cpp

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);
// }
}
}