30 lines
656 B
C++
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);
|
|
}
|