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