fakir/tests/SymTable.cpp

30 lines
656 B
C++

#include <catch2/catch.hpp>
#include "../src/SymTable.hpp"
class SymTableTest
{
public:
explicit SymTableTest() {}
virtual ~SymTableTest() {}
protected:
fk::Loc m_loc {"tests/symtable"};
fk::SymTable m_sym;
};
TEST_CASE_METHOD(SymTableTest, "SymTable_declare_var")
{
REQUIRE(std::nullopt == m_sym.find("hello"));
m_sym.declare_local("hello", 404, m_loc);
auto entry = m_sym.find("hello");
REQUIRE(std::nullopt != entry);
REQUIRE("hello" == entry->name());
REQUIRE(404 == entry->addr());
REQUIRE(false == entry->is_global());
REQUIRE_THROWS_AS(m_sym.declare_local("hello", 407, m_loc),
fk::symbol_error);
}