#include "lel.hpp" #include #include #include #include "ansi_parser.hpp" #include #include #include TEST_CASE("test basic ops", "[lel]") { lel::Parser parser(0, 0, 500, 500); bool good = parser.parse( "[ label_1 | label3 | test1]" "[ *(300,300)text1 | %(150)people | ^test2]" "[ >label2 | _ | .test3]" "[ =message | buttons | test4]"); REQUIRE(good); for(size_t rowcount = 0; rowcount < parser.grid.size(); rowcount++) { auto& row = parser.grid[rowcount]; for(size_t colcount = 0; colcount < row.size(); colcount++) { auto &name = row[colcount]; auto &cell = parser.cells.at(name); REQUIRE(cell.row == int(rowcount)); REQUIRE(cell.col == int(colcount)); } } REQUIRE(parser.cells.size() == 12); REQUIRE(parser.cells.at("label2").right == true); REQUIRE(parser.cells.at("text1").expand == true); REQUIRE(parser.cells.at("text1").w == 300); REQUIRE(parser.cells.at("text1").h == 300); REQUIRE(parser.cells.at("people").expand == false); REQUIRE(parser.cells.at("message").expand == false); REQUIRE(parser.cells.at("message").center == true); for(auto& [name, cell] : parser.cells) { REQUIRE(cell.w > 0); REQUIRE(cell.h > 0); } auto hit = parser.hit(10, 10); REQUIRE(*hit == "label_1"); auto nohit = parser.hit(1000, 1000); REQUIRE(!nohit); REQUIRE(nohit == std::nullopt); }