Functional Weave
Code in Rust

finance.invoice.line-total@1.0.0

vectors.json

1,348 bytes · view raw

[
  { "name": "three units at 1.99", "args": [{ "minor": 199, "currency": "GBP" }, 3, 0], "expect": { "minor": 597, "currency": "GBP" } },
  { "name": "ten percent off three units", "args": [{ "minor": 199, "currency": "GBP" }, 3, 1000], "expect": { "minor": 537, "currency": "GBP" } },
  { "name": "single unit, no discount", "args": [{ "minor": 50000, "currency": "GBP" }, 1, 0], "expect": { "minor": 50000, "currency": "GBP" } },
  { "name": "zero quantity is zero", "args": [{ "minor": 50000, "currency": "GBP" }, 0, 0], "expect": { "minor": 0, "currency": "GBP" } },
  { "name": "a credit line is negative", "args": [{ "minor": 50000, "currency": "GBP" }, -1, 0], "expect": { "minor": -50000, "currency": "GBP" } },
  { "name": "a discount that lands on half a penny rounds up", "args": [{ "minor": 9999, "currency": "GBP" }, 1, 1000], "expect": { "minor": 8999, "currency": "GBP" } },
  { "name": "a full discount leaves nothing", "args": [{ "minor": 1999, "currency": "GBP" }, 2, 10000], "expect": { "minor": 0, "currency": "GBP" } },
  { "name": "a fractional quantity is an error", "args": [{ "minor": 199, "currency": "GBP" }, 2.5, 0], "expectError": "quantity must be an integer" },
  { "name": "a discount above 100 percent is an error", "args": [{ "minor": 199, "currency": "GBP" }, 1, 10001], "expectError": "between 0 and 10000" }
]