// Tests — convergence and determinism basics #include #include "agents/two_way_engine.hpp" #include "agents/rhiannon.hpp" using agents::TwoWayEngine; using agents::Rhiannon; TEST(TwoWayEngine, ConvergesToConstantTarget) { TwoWayEngine::Cfg cfg; cfg.dim = 8; cfg.iters = 50; cfg.epsilon = 1e-6; TwoWayEngine eng(cfg); std::vector target(cfg.dim, 0.8f); eng.set_target(target); // Run a few outer ticks for (int i = 0; i < 20; ++i) eng.step(); EXPECT_LT(eng.error(), 1e-2); } TEST(Rhiannon, DeterminismSameInputs) { TwoWayEngine::Cfg cfg; cfg.dim = 8; cfg.iters = 30; Rhiannon r1(cfg), r2(cfg); std::vector input(cfg.dim, 0.3f); for (int i = 0; i < 10; ++i) { r1.set_input(input); r1.tick(); r2.set_input(input); r2.tick(); } EXPECT_NEAR(r1.state_e(), r2.state_e(), 1e-6); } int main(int argc, char** argv) { ::testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }