• src/doors/clans-src/tests/fixtures/qtest/acs.evt display.evt donequest

    From Deucе@VERT to Git commit to main/sbbs/master on Sun Mar 8 16:54:10 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/5a2bc73418dbfee5e290ab20
    Added Files:
    src/doors/clans-src/tests/fixtures/qtest/acs.evt display.evt donequest.evt flags.evt getkey.evt heal.evt input.evt jump.evt misc.evt multi_option.evt news.evt npc_multi.evt npc_multi.npc.txt npc_telltopic.evt npc_telltopic.npc.txt quests.ini rewards.evt src/doors/clans-src/tests/fixtures/qtest/scripts/acs_always_true.script acs_and_false.script acs_and_true.script acs_dflag.script acs_gflag.script acs_gold.script acs_hflag.script acs_mine_k.script acs_mine_l.script acs_or.script acs_paren.script acs_pflag.script acs_questdone.script acs_random_false.script acs_random_true.script acs_tflag.script ambiguous_topic.script bad_topic.script display.script donequest.script empty_choice.script eof_no_end.script fight_lose.script fight_run.script getkey_a.script getkey_b.script givefight.script givefollowers.script givegold.script givepoints.script givexp.script heal_after_fight.script heal_hp.script heal_sp.script input_alpha.script input_beta.script invalid_choice.script jump.script malformed_line.script multi_opt_a.script multi_opt_b.script multi_opt_c.script news.script npc_merchant_telltopic.script npc_wizard_greet_exit.script npc_wizard_info.script state_dflags.script state_hflags.script state_pflags.script takegold_flat.script takegold_pct.script tellquest.script src/doors/clans-src/tests/fixtures/qtest/tellquest.evt
    Modified Files:
    src/doors/clans-src/docs/todo.txt src/doors/clans-src/tests/fixtures/qtest/fight.evt src/doors/clans-src/tests/test_qtest.sh
    Log Message:
    Add exhaustive qtest regression tests (160 tests)

    Cover the full scripting language and all qtest error paths:

    Positive tests:
    - SetFlag/ClearFlag for all flag types (G, H, P, D, T)
    - All reward commands: GiveGold, TakeGold (flat/%), GiveXP, GivePoints,
    GiveFight, GiveFollowers, GiveItem (new)
    - Heal SP; Pause (new, no-op in script mode per console.c)
    - All ACS condition types: ^, %, G, H, P, D, T, Q, $gold, L, K, R, &, |, ()
    - Jump, Display, AddNews
    - Option (3-way), GetKey, Input (Topic= hook), DoneQuest
    - Fight outcomes: Win, Lose, Run
    - Multi-topic NPC chat, TellTopic, TellQuest
    - State args: -G, -H, -P, -D, -g, -m, -q (new), -Q

    Negative/failure tests (new error code paths):
    - Exit 1: bare non-option argument (vs. unknown -flag)
    - Exit 2: premature End when hook expected
    - Exit 2: empty Choice= value
    - Exit 2: invalid Choice char not in allowed set
    - Exit 2: malformed script line (no = sign)
    - Exit 2: Topic= value not found in option list
    - Exit 2: ambiguous Topic= prefix (matches multiple options)
    - Exit 3: EOF reached instead of End marker (vs. non-End line)

    Untestable items documented in docs/todo.txt [2.1]: Heal HP
    (RunEvent resets HP unconditionally), GivePoints/GiveFight/GiveFollowers
    (not in state summary), DoneQuest->QuestsDone bit (caller's responsibility).

    Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net