#include #include #include #include #include TEST_CASE("Frame") { auto data = new uint16_t[100]; for (int i = 0; i < 100; i++) { data[i] = i; } Frame f(reinterpret_cast(data), 10, 10, 16); for (int i = 0; i < 100; i++) { REQUIRE((uint16_t)*f.get(i / 10, i % 10) == data[i]); } REQUIRE(f.rows() == 10); REQUIRE(f.cols() == 10); REQUIRE(f.bitdepth() == 16); uint16_t i = 44; f.set(0, 0, i); REQUIRE((uint16_t)*f.get(0, 0) == i); delete[] data; } TEST_CASE("NDView") { auto data = new uint16_t[100]; for (int i = 0; i < 100; i++) { data[i] = i; } SECTION("constructors") { NDView ds(data, std::vector({10, 10})); for (int i = 0; i < 100; i++) { REQUIRE(ds(i / 10, i % 10) == data[i]); } } SECTION("from Frame") { Frame f(reinterpret_cast(data), 10, 10, 16); NDView ds = f.view(); for (int i = 0; i < 100; i++) { REQUIRE(ds(i / 10, i % 10) == data[i]); } f.set(0, 0, (uint16_t)44); REQUIRE((uint16_t)*f.get(0, 0) == 44); // check that set worked REQUIRE(ds(0, 0) == 44); // check that ds is updated REQUIRE(data[0] == 0); // check that data is not updated } delete[] data; } TEST_CASE("NDArray") { auto data = new uint16_t[100]; for (int i = 0; i < 100; i++) { data[i] = i; } SECTION("from Frame") { Frame f(reinterpret_cast(data), 10, 10, 16); NDArray img = f.image(); for (int i = 0; i < 100; i++) { REQUIRE(img(i / 10, i % 10) == data[i]); } f.set(0, 0, (uint16_t)44); REQUIRE((uint16_t)*f.get(0, 0) == 44); // check that set worked REQUIRE(img(0, 0) == 0); // check that ds is updated REQUIRE(data[0] == 0); // check that data is not updated } delete[] data; }