"""display.vim_mode: config-only vi keybindings for the CLI composer."""

import unittest
from types import SimpleNamespace



def _import_cli():
    import cli as cli_mod

    return cli_mod


class TestVimModeLabel(unittest.TestCase):
    """The status-bar label reflects the live vi input mode; off/no-app yields empty."""

    def test_label_tracks_input_mode(self):
        cli_mod = _import_cli()
        from prompt_toolkit.key_binding.vi_state import InputMode

        self.assertEqual(
            cli_mod.HermesCLI._vim_mode_label(SimpleNamespace(_vim_mode=False, _app=None)), "")
        self.assertEqual(
            cli_mod.HermesCLI._vim_mode_label(SimpleNamespace(_vim_mode=True, _app=None)), "")

        app = SimpleNamespace(vi_state=SimpleNamespace(input_mode=InputMode.INSERT))
        stub = SimpleNamespace(_vim_mode=True, _app=app)
        self.assertEqual(cli_mod.HermesCLI._vim_mode_label(stub), "INSERT")
        app.vi_state.input_mode = InputMode.NAVIGATION
        self.assertEqual(cli_mod.HermesCLI._vim_mode_label(stub), "NORMAL")
        app.vi_state.input_mode = InputMode.REPLACE
        self.assertEqual(cli_mod.HermesCLI._vim_mode_label(stub), "REPLACE")




if __name__ == "__main__":
    unittest.main()
