[
{ "name": "an ordinary advance", "args": [12345, 12400, 5], "expect": 55 },
{ "name": "no consumption between reads", "args": [4321, 4321, 5], "expect": 0 },
{ "name": "a five-digit meter rolls over past 99999", "args": [99950, 20, 5], "expect": 70 },
{ "name": "a four-digit meter rolls over past 9999 by one unit", "args": [9999, 0, 4], "expect": 1 },
{ "name": "rolling over from zero back to just below is nearly a full turn", "args": [1, 0, 4], "expect": 9999 },
{ "name": "a one-digit register", "args": [9, 2, 1], "expect": 3 },
{ "name": "a fifteen-digit register at its top", "args": [999999999999990, 5, 15], "expect": 15 },
{ "name": "from zero to the top of a six-digit register", "args": [0, 999999, 6], "expect": 999999 },
{ "name": "a read too large for the register is refused", "args": [12345, 123456, 5], "expectError": "reads must be whole numbers from 0 to 99999 for a 5-digit meter" },
{ "name": "a negative read is refused", "args": [-1, 10, 5], "expectError": "reads must be whole numbers" },
{ "name": "a fractional read is refused", "args": [100.5, 120, 5], "expectError": "reads must be whole numbers" },
{ "name": "zero digits is refused", "args": [0, 0, 0], "expectError": "digits must be a whole number from 1 to 15" },
{ "name": "sixteen digits is refused", "args": [0, 0, 16], "expectError": "digits must be a whole number from 1 to 15" }
]