[ { "name": "pounds with a thousands comma", "args": [ "£1,234.50", "GBP", "comma-dot" ], "expect": { "minor": 123450, "currency": "GBP" } }, { "name": "euros written the German way, symbol after", "args": [ "1.234,50 €", "EUR", "dot-comma" ], "expect": { "minor": 123450, "currency": "EUR" } }, { "name": "euros written the Irish way", "args": [ "€1,234.50", "EUR", "comma-dot" ], "expect": { "minor": 123450, "currency": "EUR" } }, { "name": "millions in the German style", "args": [ "1.234.567,89 €", "EUR", "dot-comma" ], "expect": { "minor": 123456789, "currency": "EUR" } }, { "name": "no grouping and one decimal digit", "args": [ "1234.5", "GBP", "comma-dot" ], "expect": { "minor": 123450, "currency": "GBP" } }, { "name": "whole pounds", "args": [ "£5", "GBP", "comma-dot" ], "expect": { "minor": 500, "currency": "GBP" } }, { "name": "pence only", "args": [ "£0.05", "GBP", "comma-dot" ], "expect": { "minor": 5, "currency": "GBP" } }, { "name": "minus before the symbol", "args": [ "-£12.34", "GBP", "comma-dot" ], "expect": { "minor": -1234, "currency": "GBP" } }, { "name": "minus after the symbol", "args": [ "£-12.34", "GBP", "comma-dot" ], "expect": { "minor": -1234, "currency": "GBP" } }, { "name": "negative zero is zero", "args": [ "-0.00", "GBP", "comma-dot" ], "expect": { "minor": 0, "currency": "GBP" } }, { "name": "yen have no decimal places", "args": [ "¥1,500", "JPY", "comma-dot" ], "expect": { "minor": 1500, "currency": "JPY" } }, { "name": "dinar have three decimal places", "args": [ "KD 1.500", "KWD", "comma-dot" ], "expect": { "minor": 1500, "currency": "KWD" } }, { "name": "Swiss apostrophe grouping with the ISO code", "args": [ "CHF 1'234'567.89", "CHF", "apostrophe-dot" ], "expect": { "minor": 123456789, "currency": "CHF" } }, { "name": "Swedish space grouping, trailing symbol", "args": [ "1 234,56 kr", "SEK", "space-comma" ], "expect": { "minor": 123456, "currency": "SEK" } }, { "name": "no-break spaces, as word processors write them", "args": [ "1 234,56 kr", "SEK", "space-comma" ], "expect": { "minor": 123456, "currency": "SEK" } }, { "name": "French narrow no-break space grouping", "args": [ "1 234,56 €", "EUR", "space-comma" ], "expect": { "minor": 123456, "currency": "EUR" } }, { "name": "an ISO code after the number", "args": [ "10.00 GBP", "GBP", "comma-dot" ], "expect": { "minor": 1000, "currency": "GBP" } }, { "name": "a dollar sign is fine once the caller says Canadian dollars", "args": [ "$5.00", "CAD", "comma-dot" ], "expect": { "minor": 500, "currency": "CAD" } }, { "name": "US$ is recognised as one symbol", "args": [ "US$9.99", "USD", "comma-dot" ], "expect": { "minor": 999, "currency": "USD" } }, { "name": "surrounding spaces are ignored", "args": [ " £5.00 ", "GBP", "comma-dot" ], "expect": { "minor": 500, "currency": "GBP" } }, { "name": "one space between symbol and number", "args": [ "£ 5.00", "GBP", "comma-dot" ], "expect": { "minor": 500, "currency": "GBP" } }, { "name": "the largest amount that is still exact", "args": [ "90071992547409.91", "GBP", "comma-dot" ], "expect": { "minor": 9007199254740991, "currency": "GBP" } }, { "name": "three decimals for pounds is refused, not rounded", "args": [ "£1,234.567", "GBP", "comma-dot" ], "expectError": "too many decimal places" }, { "name": "1.500 yen is not fifteen hundred yen in comma-dot style", "args": [ "1.500", "JPY", "comma-dot" ], "expectError": "too many decimal places" }, { "name": "a German thousand read in the UK style is refused, not read as 1.23", "args": [ "£1.234", "GBP", "comma-dot" ], "expectError": "too many decimal places" }, { "name": "lakh grouping is not thousands grouping", "args": [ "£1,23,456.00", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "the other style's separators are refused", "args": [ "1,234.50", "EUR", "dot-comma" ], "expectError": "is not a valid amount" }, { "name": "a symbol for another currency is refused", "args": [ "€5.00", "GBP", "comma-dot" ], "expectError": "does not match GBP" }, { "name": "R$ is Brazilian real, not rand", "args": [ "R$10,00", "ZAR", "space-comma" ], "expectError": "does not match ZAR" }, { "name": "letters are refused", "args": [ "12abc", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "a symbol alone is refused", "args": [ "£", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "an empty string is refused", "args": [ "", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "a trailing decimal point is refused", "args": [ "£5.", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "accounting brackets are refused", "args": [ "(£5.00)", "GBP", "comma-dot" ], "expectError": "is not a valid amount" }, { "name": "beyond 2^53 - 1 minor units is refused", "args": [ "90071992547409.92", "GBP", "comma-dot" ], "expectError": "amount is too large" }, { "name": "an unknown currency is an error", "args": [ "5.00", "XYZ", "comma-dot" ], "expectError": "no ISO 4217 minor unit" }, { "name": "an unknown style is an error", "args": [ "5.00", "GBP", "indian" ], "expectError": "unknown number style" } ]