[ {"name": "10,000 kWh of business electricity in May 2026 at £0.00801 is £80.10", "args": ["electricity", 10000000, "2026-05-01", false, "half-up"], "expect": {"commodity": "electricity", "unit": "kWh", "rate": 801, "excluded": false, "levy": {"minor": 8010, "currency": "GBP"}, "validFrom": "2026-04-01", "validTo": "2027-03-31"}}, {"name": "5,000 kWh of gas in January 2024, still at the 2023 gas rate of £0.00672", "args": ["gas", 5000000, "2024-01-15", false, "half-up"], "expect": {"commodity": "gas", "unit": "kWh", "rate": 672, "excluded": false, "levy": {"minor": 3360, "currency": "GBP"}, "validFrom": "2023-04-01", "validTo": "2024-03-31"}}, {"name": "gas on 31 March 2024, the last day of the lower rate", "args": ["gas", 5000000, "2024-03-31", false, "half-up"], "expect": {"commodity": "gas", "unit": "kWh", "rate": 672, "excluded": false, "levy": {"minor": 3360, "currency": "GBP"}, "validFrom": "2023-04-01", "validTo": "2024-03-31"}}, {"name": "gas on 1 April 2024 is charged at the equalised £0.00775", "args": ["gas", 5000000, "2024-04-01", false, "half-up"], "expect": {"commodity": "gas", "unit": "kWh", "rate": 775, "excluded": false, "levy": {"minor": 3875, "currency": "GBP"}, "validFrom": "2024-04-01", "validTo": "2025-03-31"}}, {"name": "a tonne of LPG at £0.02175 per kg", "args": ["lpg", 1000000, "2025-06-30", false, "half-up"], "expect": {"commodity": "lpg", "unit": "kg", "rate": 2175, "excluded": false, "levy": {"minor": 2175, "currency": "GBP"}, "validFrom": "2025-04-01", "validTo": "2026-03-31"}}, {"name": "a tonne of coal as any other taxable commodity in 2026", "args": ["other", 1000000, "2026-04-01", false, "half-up"], "expect": {"commodity": "other", "unit": "kg", "rate": 6264, "excluded": false, "levy": {"minor": 6264, "currency": "GBP"}, "validFrom": "2026-04-01", "validTo": "2027-03-31"}}, {"name": "the rate already announced for April 2027 is the latest, open-ended", "args": ["electricity", 1000000, "2027-04-01", false, "half-up"], "expect": {"commodity": "electricity", "unit": "kWh", "rate": 827, "excluded": false, "levy": {"minor": 827, "currency": "GBP"}, "validFrom": "2027-04-01", "validTo": null}}, {"name": "a domestic supply is outside the levy but still reports the rate", "args": ["electricity", 10000000, "2026-05-01", true, "half-up"], "expect": {"commodity": "electricity", "unit": "kWh", "rate": 801, "excluded": true, "levy": {"minor": 0, "currency": "GBP"}, "validFrom": "2026-04-01", "validTo": "2027-03-31"}}, {"name": "one kWh is 0.775p, rounded half-up to 1p", "args": ["electricity", 1000, "2025-06-01", false, "half-up"], "expect": {"commodity": "electricity", "unit": "kWh", "rate": 775, "excluded": false, "levy": {"minor": 1, "currency": "GBP"}, "validFrom": "2025-04-01", "validTo": "2026-03-31"}}, {"name": "one kWh is 0.775p, rounded down to nothing", "args": ["electricity", 1000, "2025-06-01", false, "down"], "expect": {"commodity": "electricity", "unit": "kWh", "rate": 775, "excluded": false, "levy": {"minor": 0, "currency": "GBP"}, "validFrom": "2025-04-01", "validTo": "2026-03-31"}}, {"name": "a fraction of a kWh in watt-hours: 1,234.567 kWh of gas at 0.775p", "args": ["gas", 1234567, "2025-06-01", false, "half-up"], "expect": {"commodity": "gas", "unit": "kWh", "rate": 775, "excluded": false, "levy": {"minor": 957, "currency": "GBP"}, "validFrom": "2025-04-01", "validTo": "2026-03-31"}}, {"name": "60 kg of LPG is exactly 130.5p: half-even keeps the even 130p", "args": ["lpg", 60000, "2025-06-01", false, "half-even"], "expect": {"commodity": "lpg", "unit": "kg", "rate": 2175, "excluded": false, "levy": {"minor": 130, "currency": "GBP"}, "validFrom": "2025-04-01", "validTo": "2026-03-31"}}, {"name": "no energy is no levy", "args": ["gas", 0, "2026-06-01", false, "half-up"], "expect": {"commodity": "gas", "unit": "kWh", "rate": 801, "excluded": false, "levy": {"minor": 0, "currency": "GBP"}, "validFrom": "2026-04-01", "validTo": "2027-03-31"}}, {"name": "a date before the earliest rate carried is an error", "args": ["electricity", 1000, "2023-03-31", false, "half-up"], "expectError": "no Climate Change Levy rate for electricity on 2023-03-31"}, {"name": "an unknown commodity is refused", "args": ["diesel", 1000, "2025-06-01", false, "half-up"], "expectError": "unknown commodity \"diesel\""}, {"name": "a negative quantity is refused", "args": ["gas", -1, "2025-06-01", false, "half-up"], "expectError": "quantity must be a whole number of thousandths of a unit"}, {"name": "a malformed date is refused", "args": ["gas", 1000, "01/06/2025", false, "half-up"], "expectError": "onDate must be an ISO date"}, {"name": "an unknown rounding mode is refused", "args": ["gas", 1000, "2025-06-01", false, "nearest"], "expectError": "unknown rounding mode \"nearest\""} ]