From a0bf28645f5d99c34f564df4966199643eebc5d0 Mon Sep 17 00:00:00 2001 From: nick black Date: Mon, 17 May 2021 23:27:25 -0400 Subject: [PATCH] unit test for visuals with partial limit + offset #1661 --- src/tests/visual.cpp | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/tests/visual.cpp b/src/tests/visual.cpp index aba26027e..3761de85c 100644 --- a/src/tests/visual.cpp +++ b/src/tests/visual.cpp @@ -35,7 +35,7 @@ TEST_CASE("Visual") { CHECK(0 == ncplane_destroy(n)); } - // check that leny/lenx properly limit the output + // check that leny/lenx properly limit the output, new plane SUBCASE("Partial") { auto y = 10; auto x = 10; @@ -59,6 +59,32 @@ TEST_CASE("Visual") { CHECK(0 == ncplane_destroy(n)); } + // partial limit via len, offset via y/x, new plane + SUBCASE("PartialOffset") { + auto y = 10; + auto x = 10; + std::vector v(x * y, htole(0xe61c28ff)); + auto ncv = ncvisual_from_rgba(v.data(), y, sizeof(decltype(v)::value_type) * x, x); + REQUIRE(nullptr != ncv); + struct ncvisual_options vopts = { + .n = nullptr, + .scaling = NCSCALE_NONE, + .y = 2, .x = 4, + .begy = 0, .begx = 0, + .leny = 5, .lenx = 8, + .blitter = NCBLIT_1x1, + .flags = 0, .transcolor = 0, + }; + auto n = ncvisual_render(nc_, ncv, &vopts); + REQUIRE(nullptr != n); + CHECK(5 == ncplane_dim_y(n)); + CHECK(8 == ncplane_dim_x(n)); + CHECK(2 == ncplane_y(n)); + CHECK(4 == ncplane_x(n)); + ncvisual_destroy(ncv); + CHECK(0 == ncplane_destroy(n)); + } + SUBCASE("InflateBitmap") { const uint32_t pixels[4] = { htole(0xffff00ff), htole(0xff00ffff), htole(0xff0000ff), htole(0xffffffff) }; auto ncv = ncvisual_from_rgba(pixels, 2, 8, 2);