// Copyright 2012 Twitter, Inc // http://www.apache.org/licenses/LICENSE-2.0 var TwitterCldr = require('../../../lib/assets/javascripts/twitter_cldr/en.js'); describe("CurrencyFormatter", function() { describe("#format", function() { beforeEach(function() { formatter = new TwitterCldr.CurrencyFormatter(); }); it("should use a dollar sign when no other currency symbol is given (and default to a precision of 2)", function() { expect(formatter.format(12)).toEqual("$12.00"); }); it("handles negative numbers", function() { // yes, negative numbers (at least for accounting) are represented using parentheses without a minus sign expect(formatter.format(-12)).toEqual("($12.00)"); }); it("should use the specified currency symbol when specified", function() { // S/. is the symbol for the Peruvian Nuevo Sol, just in case you were curious expect(formatter.format(12, {currency: "S/."})).toEqual("S/.12.00"); }); it("should use the currency symbol for the corresponding currency code", function() { expect(formatter.format(12, {currency: "EUR"})).toEqual("€12.00"); }); it("should use the default currency precision if it's not specified explicitly", function() { expect(formatter.format(12.345, {currency: "JPY"})).toEqual("¥12"); }); it("should use given precision if it's specified explicitly", function() { expect(formatter.format(12.345, {currency: "JPY", precision: 1})).toEqual("¥12.3"); }); it("should allow a precision of zero", function() { expect(formatter.format(12.3, {currency: "EUR", precision: 0})).toEqual("€12"); }); it("should use the cldr_symbol for the corresponding currency code if use_cldr_code is specified", function() { TwitterCldr.Currencies.currencies = { "JPY": {symbol: "¥", cldr_symbol: "YEN", currency: "JPY", "name": "Japanese yen"} }; expect(formatter.format(12, {currency: "JPY", use_cldr_symbol: true})).toEqual("YEN12"); }); it("overrides the default precision", function() { expect(formatter.format(12, {precision: 3})).toEqual("$12.000"); }); }); });