from cjm_fasthtml_token_selector.core.config import TokenSelectorConfig, _reset_prefix_counter
from cjm_fasthtml_token_selector.core.html_ids import TokenSelectorHtmlIds
_reset_prefix_counter()
# Gap mode
cfg = TokenSelectorConfig(prefix="t", selection_mode="gap")
ids = TokenSelectorHtmlIds(prefix="t")
js = generate_navigation_js(cfg, ids)
assert "ns.moveLeft" in js
assert "ns.moveRight" in js
assert "ns.selectGap" in js
assert "ns.moveToFirst" in js
assert "ns.moveToLast" in js
print("Gap mode navigation JS generated!")
# Word mode
cfg_w = TokenSelectorConfig(prefix="tw", selection_mode="word")
js_w = generate_navigation_js(cfg_w, ids)
assert "ns.selectWord" in js_w
print("Word mode navigation JS generated!")
# Span mode
cfg_s = TokenSelectorConfig(prefix="ts", selection_mode="span")
js_s = generate_navigation_js(cfg_s, ids)
assert "ns.extendLeft" in js_s
assert "ns.extendRight" in js_s
assert "ns.selectToken" in js_s
print("Span mode navigation JS generated!")
_reset_prefix_counter()
print("All navigation JS tests passed!")