spec/tokenizers/numbers/number_tokenizer_spec.rb (55 lines of code) (raw):
# encoding: UTF-8
# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0
require 'spec_helper'
describe TwitterCldr::Tokenizers::NumberTokenizer do
describe "#tokenize" do
let(:number) { 10 }
it "gets tokens for a latin language (i.e. Portuguese)" do
data_reader = TwitterCldr::DataReaders::NumberDataReader.new(:pt)
got = data_reader.tokenizer.tokenize(data_reader.pattern(number))
expected = [
{ value: "", type: :plaintext },
{ value: "#,##0.###", type: :pattern }
]
check_token_list(got, expected)
end
it "gets tokens for a non-latin language (i.e. Russian)" do
data_reader = TwitterCldr::DataReaders::NumberDataReader.new(:ru)
got = data_reader.tokenizer.tokenize(data_reader.pattern(number))
expected = [
{ value: "", type: :plaintext },
{ value: "#,##0.###", type: :pattern }
]
check_token_list(got, expected)
end
it "gets tokens for an abbreviated number pattern with a literal period (e.g., for Russian)" do
data_reader = TwitterCldr::DataReaders::NumberDataReader.new(:ru, type: :decimal, format: :short)
pattern = data_reader.pattern(1_000)
expect(pattern).to include("тыс'.'") # ensure that we test with the data we expect
got = data_reader.tokenizer.tokenize(pattern)
expected = [
{ value: "", type: :plaintext },
{ value: "0", type: :pattern },
{ value: " тыс.", type: :plaintext }
]
check_token_list(got, expected)
end
it "correctly parses suffixes (i.e. Russian currency)" do
data_reader = TwitterCldr::DataReaders::NumberDataReader.new(:ru, type: :currency)
got = data_reader.tokenizer.tokenize(data_reader.pattern(number))
expected = [
{ value: "", type: :plaintext },
{ value: "#,##0.00", type: :pattern },
{ value: " ¤", type: :plaintext }
]
check_token_list(got, expected)
end
it "correctly parses prefixes (i.e. English (American) currency)" do
data_reader = TwitterCldr::DataReaders::NumberDataReader.new(:en, type: :currency)
got = data_reader.tokenizer.tokenize(data_reader.pattern(number))
expected = [
{ value: "¤", type: :plaintext },
{ value: "#,##0.00", type: :pattern }
]
check_token_list(got, expected)
end
end
end