Initial Mode set to Menu
This commit is contained in:
+11
-3
@@ -60,7 +60,7 @@ impl ExecResult {
|
|||||||
impl Session {
|
impl Session {
|
||||||
pub fn new(signals_path: String) -> Self {
|
pub fn new(signals_path: String) -> Self {
|
||||||
let game = Game::new(signals::load_signals(&signals_path));
|
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).
|
/// Reserviertes `[init]`-Signal feuern (KV-Defaults, bevor etwas läuft).
|
||||||
@@ -212,9 +212,15 @@ mod tests {
|
|||||||
use super::*;
|
use super::*;
|
||||||
|
|
||||||
// Fehlender Pfad → leere Signal-Table (load_signals schluckt den Fehler),
|
// 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()) }
|
fn empty_session() -> Session { Session::new("/nonexistent/signals.toml".into()) }
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn starts_in_menu() {
|
||||||
|
assert!(matches!(empty_session().mode, Mode::Menu));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn quit_sets_flag() {
|
fn quit_sets_flag() {
|
||||||
let mut s = empty_session();
|
let mut s = empty_session();
|
||||||
@@ -224,6 +230,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn builtin_command_mutates_kv_and_stays_free() {
|
fn builtin_command_mutates_kv_and_stays_free() {
|
||||||
let mut s = empty_session();
|
let mut s = empty_session();
|
||||||
|
s.mode = Mode::Free;
|
||||||
// Unbekanntes Signal fällt auf den Builtin-Pfad durch → `set`.
|
// Unbekanntes Signal fällt auf den Builtin-Pfad durch → `set`.
|
||||||
let r = s.exec("signal set has_key true");
|
let r = s.exec("signal set has_key true");
|
||||||
assert!(!r.quit);
|
assert!(!r.quit);
|
||||||
@@ -234,7 +241,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn menu_command_toggles_free_and_menu() {
|
fn menu_command_toggles_free_and_menu() {
|
||||||
let mut s = empty_session();
|
let mut s = empty_session();
|
||||||
assert!(matches!(s.mode, Mode::Free));
|
s.mode = Mode::Free;
|
||||||
s.exec("menu");
|
s.exec("menu");
|
||||||
assert!(matches!(s.mode, Mode::Menu));
|
assert!(matches!(s.mode, Mode::Menu));
|
||||||
s.exec("menu");
|
s.exec("menu");
|
||||||
@@ -248,6 +255,7 @@ mod tests {
|
|||||||
#[test]
|
#[test]
|
||||||
fn unknown_command_reports_and_stays_free() {
|
fn unknown_command_reports_and_stays_free() {
|
||||||
let mut s = empty_session();
|
let mut s = empty_session();
|
||||||
|
s.mode = Mode::Free;
|
||||||
let r = s.exec("frobnicate");
|
let r = s.exec("frobnicate");
|
||||||
assert_eq!(r.output.len(), 1);
|
assert_eq!(r.output.len(), 1);
|
||||||
assert!(matches!(s.mode, Mode::Free));
|
assert!(matches!(s.mode, Mode::Free));
|
||||||
|
|||||||
Reference in New Issue
Block a user