NumberFormatOptionsImplSpecific-Win10.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. WScript.LoadScriptFile("..\\UnitTestFramework\\UnitTestFramework.js");
  6. function extendOptions(base, ext) {
  7. const ret = {};
  8. for (const x in base) {
  9. if (base.hasOwnProperty(x)) {
  10. ret[x] = base[x];
  11. }
  12. }
  13. for (const x in ext) {
  14. if (ext.hasOwnProperty(x)) {
  15. ret[x] = ext[x];
  16. }
  17. }
  18. return ret;
  19. }
  20. const NON_BREAKING_SPACE = "\u00a0";
  21. var tests = [
  22. {
  23. name: "Test Valid Options - Formatting Currency with Significant Digits",
  24. body: function () {
  25. const usdBaseOptions = { minimumSignificantDigits: 3, maximumSignificantDigits: 3, style: "currency", currency: "USD" };
  26. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(usdBaseOptions, {})).format(123.1), "$123", "currency: USD (default display)");
  27. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(usdBaseOptions, { currencyDisplay: "code" })).format(123.1), `USD${NON_BREAKING_SPACE}123`, "currency code: USD");
  28. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(usdBaseOptions, { currencyDisplay: "symbol" })).format(123.1), "$123", "currency symbol: USD ($)");
  29. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(usdBaseOptions, { currencyDisplay: "name" })).format(123.1), `USD${NON_BREAKING_SPACE}123`, "currency name: USD");
  30. }
  31. },
  32. {
  33. name: "Test Valid Options - Formatting Percentage with Significant Digits",
  34. body: function () {
  35. const baseSigFigs = { minimumSignificantDigits: 3, maximumSignificantDigits: 3 };
  36. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(baseSigFigs, { style: "decimal" })).format(123.1), "123", "style: decimal");
  37. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(baseSigFigs, { style: "percent" })).format(123.1), `12,300${NON_BREAKING_SPACE}%`, "style: percent");
  38. assert.areEqual(new Intl.NumberFormat("en-US", extendOptions(baseSigFigs, { style: "percent", useGrouping: false })).format(123.1), `12300${NON_BREAKING_SPACE}%`, "style: percent, no grouping");
  39. }
  40. }
  41. ];
  42. testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" });