mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 19:07:47 -04:00
7c40d33db3
Phase 1a (boot slice): 30 instructions at 0xBFC00000, compiles clean. Phase 1b (instruction coverage): 54 opcodes implemented in strict_translator, 44,629 walker-reachable instructions covered, 0 missing. Phase 1c (function discovery): 76 functions from 2 seeds, 2,988 instructions, 199 call edges, 27 indirect jumps. All validated through StrictTranslator. Phase 1d (indirect control flow): 27 sites classified — 21 A0/B0/C0 dispatch stubs, 4 computed calls, 2 computed tail calls. Ghidra cross-referenced with 0 disagreements. Phase 1e (relocation): ROM-to-RAM copy at FUN_bfc00420 proven with both Ghidra (static) and DuckStation (runtime). 69 address aliases, 68/69 function entries match byte-for-byte in RAM. Normalization rule documented. Includes PRINCIPLES.md and DEBUG.md adapted from recomp-template. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
60 lines
1.7 KiB
C++
60 lines
1.7 KiB
C++
#include <toml/parser.hpp>
|
|
|
|
#include "unit_test.hpp"
|
|
#include "test_parse_aux.hpp"
|
|
|
|
using namespace toml;
|
|
using namespace detail;
|
|
|
|
BOOST_AUTO_TEST_CASE(test_inline_table)
|
|
{
|
|
TOML11_TEST_PARSE_EQUAL(parse_inline_table<toml::value>, "{}", table());
|
|
{
|
|
table t;
|
|
t["foo"] = toml::value(42);
|
|
t["bar"] = toml::value("baz");
|
|
TOML11_TEST_PARSE_EQUAL(parse_inline_table<toml::value>, "{foo = 42, bar = \"baz\"}", t);
|
|
}
|
|
{
|
|
table t;
|
|
table t_sub;
|
|
t_sub["name"] = toml::value("pug");
|
|
t["type"] = toml::value(t_sub);
|
|
TOML11_TEST_PARSE_EQUAL(parse_inline_table<toml::value>, "{type.name = \"pug\"}", t);
|
|
}
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(test_inline_table_value)
|
|
{
|
|
TOML11_TEST_PARSE_EQUAL_VALUE(parse_value<toml::value>, "{}", value(table()));
|
|
{
|
|
table t;
|
|
t["foo"] = toml::value(42);
|
|
t["bar"] = toml::value("baz");
|
|
TOML11_TEST_PARSE_EQUAL_VALUE(parse_value<toml::value>, "{foo = 42, bar = \"baz\"}", value(t));
|
|
}
|
|
{
|
|
table t;
|
|
table t_sub;
|
|
t_sub["name"] = toml::value("pug");
|
|
t["type"] = toml::value(t_sub);
|
|
TOML11_TEST_PARSE_EQUAL_VALUE(parse_value<toml::value>, "{type.name = \"pug\"}", value(t));
|
|
}
|
|
}
|
|
|
|
BOOST_AUTO_TEST_CASE(test_inline_table_immutability)
|
|
{
|
|
{
|
|
std::istringstream stream(std::string(
|
|
"a = {b = 1}\n"
|
|
"a.c = 2\n"));
|
|
BOOST_CHECK_THROW(toml::parse(stream), toml::syntax_error);
|
|
}
|
|
{
|
|
std::istringstream stream(std::string(
|
|
"a = {b = {c = 1}}\n"
|
|
"a.b.d = 2\n"));
|
|
BOOST_CHECK_THROW(toml::parse(stream), toml::syntax_error);
|
|
}
|
|
}
|