#include "main.h" #include "ncpp/Visual.hh" using namespace ncpp; TEST_CASE("Ncpp" * doctest::description("Basic C++ wrapper tests")) { // we ought be able to construct a NotCurses object with a nullptr FILE // or even just no argument (decays to nullptr). SUBCASE("ConstructNotCurses") { NotCurses nc; CHECK(nc.stop()); } SUBCASE("ConstructNotCursesNullFILE") { NotCurses ncnull(nullptr); CHECK(ncnull.stop()); } // we ought be able to get a new NotCurses object after stop()ping one. SUBCASE("ConstructNotCursesTwice") { NotCurses nc; CHECK(nc.stop()); NotCurses ncnull(nullptr); CHECK(ncnull.stop()); } SUBCASE("VisualFromFile") { NotCurses nc; if(nc.can_open_images()){ nc_err_e err; { Visual v = Visual(find_data("changes.jpg"), &err); CHECK(NCERR_SUCCESS == err); } } CHECK(nc.stop()); } SUBCASE("VisualFromRGBA") { NotCurses nc; uint32_t rgba[] = { 0x4080c0ff, 0x105090ff, }; { Visual v = Visual(rgba, 1, sizeof(rgba), sizeof(rgba) / sizeof(*rgba)); // FIXME check geometry } CHECK(nc.stop()); } SUBCASE("VisualFromPlane") { NotCurses nc; { auto n = nc.get_stdplane(); REQUIRE(n); // FIXME load something onto standard plane, load it into visual, erase // plane, render visual, check for equivalence... { Visual v = Visual(*n, NCBLIT_DEFAULT, 0, 0, -1, -1); } } CHECK(nc.stop()); } }