From: Carl Worth <cworth@cworth.org>
Date: Sat, 27 Jun 2020 14:55:09 +0000 (-0700)
Subject: Add failing test case for a major match-voting bug
X-Git-Url: https://git.cworth.org/git?a=commitdiff_plain;h=dccfff8883f2caaf2e9f63aa79ce918a70c08c59;p=lmno-server

Add failing test case for a major match-voting bug

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).
---

diff --git a/test b/test
index 703f005..1a91c0e 100755
--- 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