Initial Mode set to Menu
This commit is contained in:
+11
-3
@@ -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));
|
||||
|
||||
Reference in New Issue
Block a user