[
{"name": "every location up is up", "args": [["up", "up", "up"], 2], "expect": "up"},
{"name": "one down below a quorum of two is degraded, not down", "args": [["up", "down", "up"], 2], "expect": "degraded"},
{"name": "two down meets a quorum of two", "args": [["down", "up", "down"], 2], "expect": "down"},
{"name": "a quorum of one: any down location is down", "args": [["up", "down"], 1], "expect": "down"},
{"name": "a single location with a quorum of one decides alone", "args": [["down"], 1], "expect": "down"},
{"name": "a slow location alone makes the target degraded", "args": [["up", "degraded", "up"], 2], "expect": "degraded"},
{"name": "degraded votes never add up to down", "args": [["degraded", "degraded", "degraded"], 1], "expect": "degraded"},
{"name": "quorum equal to the number of locations needs all of them down", "args": [["down", "down", "degraded"], 3], "expect": "degraded"},
{"name": "all down with a unanimous quorum is down", "args": [["down", "down", "down"], 3], "expect": "down"},
{"name": "an empty list is an error", "args": [[], 1], "expectError": "statuses must not be empty"},
{"name": "a quorum of zero is an error", "args": [["up"], 0], "expectError": "downQuorum must be 1 to 1, received 0"},
{"name": "a quorum larger than the locations can never be met", "args": [["up", "down"], 3], "expectError": "downQuorum must be 1 to 2, received 3"},
{"name": "an unknown status is an error", "args": [["up", "offline"], 1], "expectError": "unknown check status: offline"}
]