]> git.cworth.org Git - empires-server/commitdiff
Add failing test case for a major match-voting bug
authorCarl Worth <cworth@cworth.org>
Sat, 27 Jun 2020 14:55:09 +0000 (07:55 -0700)
committerCarl Worth <cworth@cworth.org>
Sat, 27 Jun 2020 14:56:36 +0000 (07:56 -0700)
Specifically, the majority requirement for a word match to be
considered succesful has been counting all registered players rather
than only the players actually in the current game.

In the degenerate case, having more inactive registered players than
active would mean that no matches would ever be judged as valid even
with unanimous voting. Obviously, this is a disastrous bug.

The test case added here currently fails, (where one person voting
should be considered a (non-strict) majority in a 2-person game).

test

diff --git a/test b/test
index 703f005cfce3ec707f237b5df74321214eae8c25..1a91c0e6eaf77c1216826ca01048d91b8eedbbcb 100755 (executable)
--- a/test
+++ b/test
@@ -827,9 +827,38 @@ result=$(echo $(empathy_scores alice))
 test "$result" != "null"
 TEST_END
 
+TEST_SUBSECTION "Non players don't affect judging requirements"
+
+TEST "Start 2-player game with 6 registered players"
+empathy_reset
+empathy_player_activate eric
+empathy_player_activate fred
+prompt_id=$(empathy_submit_prompt alice 4 "1 truth or dare" | jq .id)
+empathy_start alice $prompt_id
+empathy_answer alice $prompt_id '"truth"' >/dev/null
+empathy_answer bob   $prompt_id '"true"' >/dev/null
+empathy_end_answers alice $prompt_id
+empathy_end_answers bob $prompt_id
+test "$?" = "0"
+TEST_END
+
+TEST "1 player votes for a match"
+empathy_judged alice $prompt_id '[["truth","true"]]' >/dev/null
+result=$(empathy_judged bob $prompt_id '[]')
+test "$result" = '{"valid":true}'
+TEST_END
+
+TEST "Verify the match passed the vote"
+# echo here is to strip newlines
+result=$(echo $(empathy_scores_names_numbers alice))
+test "$result" = '"alice" 2 "bob" 2 "charlie" 0 "dale" 0 "eric" 0 "fred" 0'
+TEST_END
+
 pkill -P $alice_pid
 pkill -P $bob_pid
 pkill -P $charlie_pid
 pkill -P $dale_pid
+pkill -P $eric_pid
+pkill -P $fred_pid
 
 TEST_REPORT