[unittests] add PixelTAMSetup test #1445

dankamongmen/thirdpass
nick black 3 years ago
parent 259c5f5e3e
commit dd6d9392ec
No known key found for this signature in database
GPG Key ID: 5F43400C21CBFACC

@ -145,6 +145,53 @@ TEST_CASE("Pixel") {
CHECK(0 == notcurses_render(nc_));
}
// verify that the sprixel's TAM is properly initialized
SUBCASE("PixelTAMSetup") {
// first, assemble a visual equivalent to 81 cells
auto dimy = 9;
auto dimx = 9;
auto y = dimy * nc_->tcache.cellpixy;
auto x = dimx * nc_->tcache.cellpixx;
std::vector<uint32_t> v(x * y, 0xffffffff);
// every other cell, set some pixels transparent
for(int i = 0 ; i < dimy * dimx ; ++i){
if(i % 2){
int py = (i / dimx) * nc_->tcache.cellpixy;
int px = (i % dimx) * nc_->tcache.cellpixx;
ncpixel_set_a(&v[py * x + px], 0);
}
}
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 = 0, .x = 0,
.begy = 0, .begx = 0,
.leny = y, .lenx = x,
.blitter = NCBLIT_PIXEL,
.flags = NCVISUAL_OPTION_NODEGRADE,
};
auto n = ncvisual_render(nc_, ncv, &vopts);
REQUIRE(nullptr != n);
ncvisual_destroy(ncv);
CHECK(0 == notcurses_render(nc_));
const auto s = n->sprite;
REQUIRE(s);
CHECK(s->dimy == dimy);
CHECK(s->dimx == dimx);
const auto tam = n->tacache;
for(int i = 0 ; i < s->dimy * s->dimx ; ++i){
int py = (i / dimx) * nc_->tcache.cellpixy;
int px = (i % dimx) * nc_->tcache.cellpixx;
// cells with a transparent pixel ought be SPRIXCELL_CONTAINS_TRANS;
// cells without one ought be SPRIXCELL_OPAQUE.
CHECK((i % 2) == tam[(i / dimx) + (i % dimx)]);
ncpixel_set_a(&v[py * x + px], 0);
}
ncplane_destroy(n);
}
// too much output -- OOMs ctest FIXME
/*
#ifdef NOTCURSES_USE_MULTIMEDIA

Loading…
Cancel
Save