# encoding: UTF-8 # Copyright 2012 Twitter, Inc # http://www.apache.org/licenses/LICENSE-2.0 require 'spec_helper' describe TwitterCldr::Formatters::Numbers::Integer do describe "#apply" do context "with the ### format" do before(:each) do @token = TwitterCldr::Tokenizers::Token.new(value: "###", type: :pattern) end it "test: interpolates a number" do expect(described_class.new(@token).apply(123)).to eq('123') end it "test: does not include a fraction for a float" do expect(described_class.new(@token).apply(123.45)).to eq('123') end it "test: does not round when given a float" do expect(described_class.new(@token).apply(123.55)).to eq('123') end it "test: does not round with :precision => 1" do expect(described_class.new(@token).apply(123.55, precision: 1)).to eq('123') end end context "with the #,## format" do before(:each) do @token = TwitterCldr::Tokenizers::Token.new(value: "#,##", type: :pattern) end it "test: single group" do expect(described_class.new(@token).apply(123)).to eq('1,23') end it "test: multiple groups with a primary group size" do expect(described_class.new(@token).apply(123456789)).to eq('1,23,45,67,89') end end context "with the #,##0.## format" do before(:each) do @token = TwitterCldr::Tokenizers::Token.new(value: "#,##0.##", type: :pattern) end it "test: ignores a fraction part given in the format string" do expect(described_class.new(@token).apply(1234.567)).to eq('1,234') end it "test: cldr example #,##0.## => 1 234" do expect(described_class.new(@token).apply(1234.567)).to eq('1,234') end end context "miscellaneous formats" do it "test: interpolates a number on the right side" do token = TwitterCldr::Tokenizers::Token.new(value: "0###", type: :pattern) expect(described_class.new(token).apply(123)).to eq('0123') end it "test: strips optional digits" do token = TwitterCldr::Tokenizers::Token.new(value: "######", type: :pattern) expect(described_class.new(token).apply(123)).to eq('123') end it "test: multiple groups with a primary and secondary group size" do token = TwitterCldr::Tokenizers::Token.new(value: "#,##,##0", type: :pattern) expect(described_class.new(token).apply(123456789)).to eq('12,34,56,789') end it "test: multiple groups with a primary and secondary group size and a short string" do token = TwitterCldr::Tokenizers::Token.new(value: "#,##,##0", type: :pattern) expect(described_class.new(token).apply(123)).to eq('123') end it "test: does not group when no digits left of the grouping position" do token = TwitterCldr::Tokenizers::Token.new(value: "#,###", type: :pattern) expect(described_class.new(token).apply(123)).to eq('123') end it "test: cldr example #,##0.### => 1 234" do token = TwitterCldr::Tokenizers::Token.new(value: "#,##0.###", type: :pattern) expect(described_class.new(token, group: ' ').apply(1234.567)).to eq('1 234') end it "test: cldr example ###0.##### => 1234" do token = TwitterCldr::Tokenizers::Token.new(value: "###0.#####", type: :pattern) expect(described_class.new(token, group: ' ').apply(1234.567)).to eq('1234') end it "test: cldr example ###0.0000# => 1234" do token = TwitterCldr::Tokenizers::Token.new(value: "###0.0000#", type: :pattern) expect(described_class.new(token, group: ' ').apply(1234.567)).to eq('1234') end it "test: cldr example 00000.0000 => 01234" do token = TwitterCldr::Tokenizers::Token.new(value: "00000.0000", type: :pattern) expect(described_class.new(token, group: ' ').apply(1234.567)).to eq('01234') end end end end