Initial Mode set to Menu

This commit is contained in:
2026-06-13 21:05:07 +02:00
parent 4f9a792dea
commit 983104a173
+11 -3
View File
@@ -60,7 +60,7 @@ impl ExecResult {
impl Session {
pub fn new(signals_path: String) -> Self {
let game = Game::new(signals::load_signals(&signals_path));
Self { game, mode: Mode::Free, signals_path }
Self { game, mode: Mode::Menu, signals_path }
}
/// Reserviertes `[init]`-Signal feuern (KV-Defaults, bevor etwas läuft).
@@ -212,9 +212,15 @@ mod tests {
use super::*;
// Fehlender Pfad → leere Signal-Table (load_signals schluckt den Fehler),
// also keine Asset-Abhängigkeit für diese Tests.
// also keine Asset-Abhängigkeit für diese Tests. Der Konstruktor startet
// im Menü (Titelbildschirm); Tests des Befehlspfads setzen vorab `Free`.
fn empty_session() -> Session { Session::new("/nonexistent/signals.toml".into()) }
#[test]
fn starts_in_menu() {
assert!(matches!(empty_session().mode, Mode::Menu));
}
#[test]
fn quit_sets_flag() {
let mut s = empty_session();
@@ -224,6 +230,7 @@ mod tests {
#[test]
fn builtin_command_mutates_kv_and_stays_free() {
let mut s = empty_session();
s.mode = Mode::Free;
// Unbekanntes Signal fällt auf den Builtin-Pfad durch → `set`.
let r = s.exec("signal set has_key true");
assert!(!r.quit);
@@ -234,7 +241,7 @@ mod tests {
#[test]
fn menu_command_toggles_free_and_menu() {
let mut s = empty_session();
assert!(matches!(s.mode, Mode::Free));
s.mode = Mode::Free;
s.exec("menu");
assert!(matches!(s.mode, Mode::Menu));
s.exec("menu");
@@ -248,6 +255,7 @@ mod tests {
#[test]
fn unknown_command_reports_and_stays_free() {
let mut s = empty_session();
s.mode = Mode::Free;
let r = s.exec("frobnicate");
assert_eq!(r.output.len(), 1);
assert!(matches!(s.mode, Mode::Free));