#include #include "fold/ir/source_loc.hpp" TEST_CASE("SourceLoc default-constructed is invalid", "[ir][source_loc]") { fold::ir::SourceLoc loc; REQUIRE_FALSE(loc.isValid()); REQUIRE(loc.file.empty()); REQUIRE(loc.line == 0); REQUIRE(loc.column == 0); } TEST_CASE("SourceLoc with file and line is valid", "[ir][source_loc]") { fold::ir::SourceLoc loc{"foo.c", 42, 7}; REQUIRE(loc.isValid()); REQUIRE(loc.file == "foo.c"); REQUIRE(loc.line == 42); REQUIRE(loc.column == 7); } TEST_CASE("SourceLoc with empty file is invalid even if line set", "[ir][source_loc]") { fold::ir::SourceLoc loc{"", 5, 1}; REQUIRE_FALSE(loc.isValid()); } TEST_CASE("SourceLoc with line=0 is invalid", "[ir][source_loc]") { fold::ir::SourceLoc loc{"foo.c", 0, 0}; REQUIRE_FALSE(loc.isValid()); } TEST_CASE("SourceLoc equality", "[ir][source_loc]") { fold::ir::SourceLoc a{"x.c", 1, 1}; fold::ir::SourceLoc b{"x.c", 1, 1}; fold::ir::SourceLoc c{"x.c", 1, 2}; fold::ir::SourceLoc d{"y.c", 1, 1}; REQUIRE(a == b); REQUIRE_FALSE(a == c); REQUIRE_FALSE(a == d); REQUIRE(a != c); REQUIRE(a != d); }