twitter_cldr 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (94) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -2
  3. data/History.txt +4 -0
  4. data/README.md +17 -6
  5. data/lib/twitter_cldr/resources/postal_codes_importer.rb +12 -1
  6. data/lib/twitter_cldr/resources/regexp_ast_generator.rb +41 -0
  7. data/lib/twitter_cldr/resources.rb +1 -0
  8. data/lib/twitter_cldr/shared/postal_code_generator.rb +50 -0
  9. data/lib/twitter_cldr/shared/postal_codes.rb +48 -9
  10. data/lib/twitter_cldr/shared.rb +15 -14
  11. data/lib/twitter_cldr/utils/regexp_ast.rb +115 -0
  12. data/lib/twitter_cldr/utils/regexp_sampler.rb +149 -0
  13. data/lib/twitter_cldr/utils.rb +5 -3
  14. data/lib/twitter_cldr/version.rb +1 -1
  15. data/resources/shared/postal_codes.yml +1442 -159
  16. data/spec/bidi/bidi_spec.rb +1 -1
  17. data/spec/collation/collation_spec.rb +1 -1
  18. data/spec/collation/collator_spec.rb +31 -31
  19. data/spec/collation/implicit_collation_elements_spec.rb +6 -6
  20. data/spec/collation/sort_key_builder_spec.rb +28 -26
  21. data/spec/collation/tailoring_spec.rb +1 -1
  22. data/spec/collation/trie_builder_spec.rb +16 -16
  23. data/spec/collation/trie_dumps_spec.rb +2 -2
  24. data/spec/collation/trie_loader_spec.rb +8 -8
  25. data/spec/collation/trie_spec.rb +61 -61
  26. data/spec/collation/trie_with_fallback_spec.rb +5 -5
  27. data/spec/core_ext_spec.rb +1 -1
  28. data/spec/data_readers/additional_date_format_selector_spec.rb +38 -38
  29. data/spec/data_readers/date_time_data_reader_spec.rb +2 -2
  30. data/spec/data_readers/number_data_reader_spec.rb +1 -1
  31. data/spec/formatters/calendars/datetime_formatter_spec.rb +218 -218
  32. data/spec/formatters/list_formatter_spec.rb +8 -8
  33. data/spec/formatters/numbers/abbreviated/abbreviated_number_formatter_spec.rb +14 -14
  34. data/spec/formatters/numbers/abbreviated/long_decimal_formatter_spec.rb +4 -4
  35. data/spec/formatters/numbers/abbreviated/short_decimal_formatter_spec.rb +4 -4
  36. data/spec/formatters/numbers/currency_formatter_spec.rb +11 -11
  37. data/spec/formatters/numbers/decimal_formatter_spec.rb +3 -3
  38. data/spec/formatters/numbers/helpers/fraction_spec.rb +3 -3
  39. data/spec/formatters/numbers/helpers/integer_spec.rb +16 -16
  40. data/spec/formatters/numbers/number_formatter_spec.rb +21 -21
  41. data/spec/formatters/numbers/percent_formatter_spec.rb +3 -3
  42. data/spec/formatters/numbers/rbnf/rbnf_spec.rb +2 -2
  43. data/spec/formatters/plurals/plural_formatter_spec.rb +41 -41
  44. data/spec/formatters/plurals/rules_spec.rb +13 -13
  45. data/spec/localized/localized_array_spec.rb +12 -12
  46. data/spec/localized/localized_date_spec.rb +33 -33
  47. data/spec/localized/localized_datetime_spec.rb +11 -11
  48. data/spec/localized/localized_hash_spec.rb +4 -4
  49. data/spec/localized/localized_number_spec.rb +36 -36
  50. data/spec/localized/localized_object_spec.rb +8 -8
  51. data/spec/localized/localized_string_spec.rb +53 -53
  52. data/spec/localized/localized_symbol_spec.rb +9 -9
  53. data/spec/localized/localized_time_spec.rb +10 -10
  54. data/spec/localized/localized_timespan_spec.rb +8 -8
  55. data/spec/normalization_spec.rb +6 -6
  56. data/spec/parsers/number_parser_spec.rb +36 -36
  57. data/spec/parsers/parser_spec.rb +5 -5
  58. data/spec/parsers/segmentation_parser_spec.rb +19 -19
  59. data/spec/parsers/symbol_table_spec.rb +4 -4
  60. data/spec/parsers/unicode_regex/character_class_spec.rb +19 -19
  61. data/spec/parsers/unicode_regex/character_range_spec.rb +1 -1
  62. data/spec/parsers/unicode_regex/character_set_spec.rb +8 -8
  63. data/spec/parsers/unicode_regex/literal_spec.rb +5 -5
  64. data/spec/parsers/unicode_regex/unicode_string_spec.rb +2 -2
  65. data/spec/parsers/unicode_regex_parser_spec.rb +28 -28
  66. data/spec/resources/loader_spec.rb +32 -32
  67. data/spec/shared/break_iterator_spec.rb +13 -13
  68. data/spec/shared/calendar_spec.rb +59 -59
  69. data/spec/shared/casefolder_spec.rb +5 -5
  70. data/spec/shared/code_point_spec.rb +46 -46
  71. data/spec/shared/currencies_spec.rb +7 -7
  72. data/spec/shared/language_codes_spec.rb +34 -34
  73. data/spec/shared/languages_spec.rb +30 -30
  74. data/spec/shared/numbering_system_spec.rb +7 -7
  75. data/spec/shared/numbers_spec.rb +4 -4
  76. data/spec/shared/phone_codes_spec.rb +7 -7
  77. data/spec/shared/postal_code_generator_spec.rb +76 -0
  78. data/spec/shared/postal_codes_spec.rb +35 -29
  79. data/spec/shared/territories_spec.rb +40 -40
  80. data/spec/shared/unicode_regex_spec.rb +71 -71
  81. data/spec/spec_helper.rb +2 -2
  82. data/spec/tokenizers/calendars/date_tokenizer_spec.rb +1 -1
  83. data/spec/tokenizers/calendars/timespan_tokenizer_spec.rb +6 -6
  84. data/spec/tokenizers/composite_token_spec.rb +3 -3
  85. data/spec/tokenizers/token_spec.rb +3 -3
  86. data/spec/twitter_cldr_spec.rb +72 -72
  87. data/spec/utils/code_points_spec.rb +10 -10
  88. data/spec/utils/interpolation_spec.rb +32 -32
  89. data/spec/utils/range_set_spec.rb +36 -36
  90. data/spec/utils/regexp_ast_spec.rb +44 -0
  91. data/spec/utils/regexp_sampler_spec.rb +182 -0
  92. data/spec/utils/yaml/yaml_spec.rb +23 -23
  93. data/spec/utils_spec.rb +19 -19
  94. metadata +263 -258
@@ -23,64 +23,64 @@ describe UnicodeRegexParser do
23
23
  describe "#parse" do
24
24
  it "identifies ranges" do
25
25
  elements = parse(tokenize("[a-z]"))
26
- elements.first.should be_a(UnicodeRegexParser::CharacterClass)
26
+ expect(elements.first).to be_a(UnicodeRegexParser::CharacterClass)
27
27
  root = elements.first.send(:root)
28
- root.should be_a(UnicodeRegexParser::CharacterRange)
29
- root.initial.codepoints.should == "a".unpack("U*")
30
- root.final.codepoints.should == "z".unpack("U*")
28
+ expect(root).to be_a(UnicodeRegexParser::CharacterRange)
29
+ expect(root.initial.codepoints).to eq("a".unpack("U*"))
30
+ expect(root.final.codepoints).to eq("z".unpack("U*"))
31
31
  end
32
32
 
33
33
  it "replaces variables" do
34
34
  symbol_table = SymbolTable.new("$VAR" => tokenize("\\p{L}"))
35
35
  elements = parse(tokenize("($VAR)?"), :symbol_table => symbol_table)
36
- elements[1].should be_a(UnicodeRegexParser::CharacterSet)
37
- elements[1].property_value.should == "L"
36
+ expect(elements[1]).to be_a(UnicodeRegexParser::CharacterSet)
37
+ expect(elements[1].property_value).to eq("L")
38
38
  end
39
39
 
40
40
  it "handles character and negated character sets" do
41
41
  elements = parse(tokenize("\\p{L}[:^P:]\\P{L}[:P:]"))
42
42
 
43
43
  element = elements[0]
44
- element.should be_a(UnicodeRegexParser::CharacterSet)
45
- element.property_value.should == "L"
44
+ expect(element).to be_a(UnicodeRegexParser::CharacterSet)
45
+ expect(element.property_value).to eq("L")
46
46
 
47
47
  element = elements[1]
48
- element.should be_a(UnicodeRegexParser::CharacterClass)
49
- element.send(:root).child.property_value.should == "P"
50
- element.send(:root).operator.should == :negate
48
+ expect(element).to be_a(UnicodeRegexParser::CharacterClass)
49
+ expect(element.send(:root).child.property_value).to eq("P")
50
+ expect(element.send(:root).operator).to eq(:negate)
51
51
 
52
52
  element = elements[2]
53
- element.should be_a(UnicodeRegexParser::CharacterClass)
54
- element.send(:root).child.property_value.should == "L"
53
+ expect(element).to be_a(UnicodeRegexParser::CharacterClass)
54
+ expect(element.send(:root).child.property_value).to eq("L")
55
55
 
56
56
  element = elements[3]
57
- element.should be_a(UnicodeRegexParser::CharacterSet)
58
- element.property_value.should == "P"
57
+ expect(element).to be_a(UnicodeRegexParser::CharacterSet)
58
+ expect(element.property_value).to eq("P")
59
59
  end
60
60
 
61
61
  it "handles unicode characters" do
62
62
  elements = parse(tokenize("\\u0123"))
63
- elements[0].should be_a(UnicodeRegexParser::UnicodeString)
64
- elements[0].codepoints.should == [291]
63
+ expect(elements[0]).to be_a(UnicodeRegexParser::UnicodeString)
64
+ expect(elements[0].codepoints).to eq([291])
65
65
  end
66
66
 
67
67
  it "handles multichar and escaped unicode strings" do
68
68
  elements = parse(tokenize("\\g{abc}"))
69
- elements[0].should be_a(UnicodeRegexParser::Literal)
70
- elements[0].text.should == "\\g"
71
- elements[1].should be_a(UnicodeRegexParser::UnicodeString)
72
- elements[1].codepoints.should == [97, 98, 99]
69
+ expect(elements[0]).to be_a(UnicodeRegexParser::Literal)
70
+ expect(elements[0].text).to eq("\\g")
71
+ expect(elements[1]).to be_a(UnicodeRegexParser::UnicodeString)
72
+ expect(elements[1].codepoints).to eq([97, 98, 99])
73
73
  end
74
74
 
75
75
  it "handles special chars" do
76
76
  elements = parse(tokenize("^(?:)$"))
77
- elements.each { |elem| elem.should be_a(UnicodeRegexParser::Literal) }
78
- elements[0].text.should == "^"
79
- elements[1].text.should == "("
80
- elements[2].text.should == "?"
81
- elements[3].text.should == ":"
82
- elements[4].text.should == ")"
83
- elements[5].text.should == "$"
77
+ elements.each { |elem| expect(elem).to be_a(UnicodeRegexParser::Literal) }
78
+ expect(elements[0].text).to eq("^")
79
+ expect(elements[1].text).to eq("(")
80
+ expect(elements[2].text).to eq("?")
81
+ expect(elements[3].text).to eq(":")
82
+ expect(elements[4].text).to eq(")")
83
+ expect(elements[5].text).to eq("$")
84
84
  end
85
85
  end
86
86
  end
@@ -16,37 +16,37 @@ describe Loader do
16
16
 
17
17
  it 'loads the correct YAML file' do
18
18
  stub_resource_file(resource_path, "---\n- 1\n- 2\n")
19
- loader.get_resource(:random, :resource).should == [1, 2]
19
+ expect(loader.get_resource(:random, :resource)).to eq([1, 2])
20
20
  end
21
21
 
22
22
  it 'symbolizes hash keys' do
23
23
  stub_resource_file(resource_path, "---\n:a:\n :b: 3\n")
24
- loader.get_resource(:random, :resource).should == { :a => { :b => 3 } }
24
+ expect(loader.get_resource(:random, :resource)).to eq({ :a => { :b => 3 } })
25
25
  end
26
26
 
27
27
  it 'loads the resource only once' do
28
28
  mock(loader).load_resource(resource_path).once { resource_content }
29
29
 
30
30
  result = loader.get_resource(:random, :resource)
31
- result.should == resource_content
31
+ expect(result).to eq(resource_content)
32
32
  # second time load_resource is not called but we get the same object as before
33
- loader.get_resource(:random, :resource).object_id.should == result.object_id
33
+ expect(loader.get_resource(:random, :resource).object_id).to eq(result.object_id)
34
34
  end
35
35
 
36
36
  it 'accepts a variable length resource path both in symbols and strings' do
37
37
  stub(loader).load_resource('foo/bar/baz.yml') { 'foo-bar-baz' }
38
- loader.get_resource('foo', :bar, 'baz').should == 'foo-bar-baz'
38
+ expect(loader.get_resource('foo', :bar, 'baz')).to eq('foo-bar-baz')
39
39
  end
40
40
 
41
41
  it 'raises an exception if resource file is missing' do
42
42
  mock(File).file?(File.join(TwitterCldr::RESOURCES_DIR, 'foo/bar.yml')) { false }
43
- lambda { loader.get_resource(:foo, :bar) }.should raise_error(ArgumentError, "Resource 'foo/bar.yml' not found.")
43
+ expect { loader.get_resource(:foo, :bar) }.to raise_error(ArgumentError, "Resource 'foo/bar.yml' not found.")
44
44
  end
45
45
 
46
46
  context 'custom resources' do
47
47
  it "doesn't merge the custom resource if it doesn't exist" do
48
48
  mock(loader).read_resource_file('foo/bar.yml') { ":foo: bar" }
49
- loader.get_resource(:foo, :bar).should == { :foo => "bar" }
49
+ expect(loader.get_resource(:foo, :bar)).to eq({ :foo => "bar" })
50
50
  end
51
51
 
52
52
  context 'with a custom resource' do
@@ -61,12 +61,12 @@ describe Loader do
61
61
  mock.proxy(loader).load_resource("foo/bar.yml")
62
62
  mock.proxy(loader).load_resource("custom/foo/bar.yml", false)
63
63
 
64
- loader.get_resource(:foo, :bar).should == { :foo => "bar", :bar => "baz" }
64
+ expect(loader.get_resource(:foo, :bar)).to eq({ :foo => "bar", :bar => "baz" })
65
65
  end
66
66
 
67
67
  it 'does not merge the custom resource if custom resources are disabled' do
68
68
  TwitterCldr.disable_custom_locale_resources = true
69
- loader.get_resource(:foo, :bar).should == { :foo => "bar" }
69
+ expect(loader.get_resource(:foo, :bar)).to eq({ :foo => "bar" })
70
70
  TwitterCldr.disable_custom_locale_resources = false
71
71
  end
72
72
  end
@@ -76,7 +76,7 @@ describe Loader do
76
76
  describe '#get_locale_resource' do
77
77
  it 'loads the correct locale resource file' do
78
78
  stub(loader).get_resource(:locales, :de, :numbers) { 'foo' }
79
- loader.get_locale_resource(:de, :numbers).should == 'foo'
79
+ expect(loader.get_locale_resource(:de, :numbers)).to eq('foo')
80
80
  end
81
81
 
82
82
  it 'loads the resource only once' do
@@ -84,56 +84,56 @@ describe Loader do
84
84
 
85
85
  result = loader.get_locale_resource(:de, :numbers)
86
86
  # second time get_resource is not called but we get the same object as before
87
- loader.get_locale_resource(:de, :numbers).object_id.should == result.object_id
87
+ expect(loader.get_locale_resource(:de, :numbers).object_id).to eq(result.object_id)
88
88
  end
89
89
 
90
90
  it 'converts locales' do
91
91
  mock(TwitterCldr).convert_locale('zh-tw') { :'zh-Hant' }
92
92
  mock(loader).get_resource(:locales, :'zh-Hant', :numbers) { 'foo' }
93
93
 
94
- loader.get_locale_resource('zh-tw', :numbers).should == 'foo'
94
+ expect(loader.get_locale_resource('zh-tw', :numbers)).to eq('foo')
95
95
  end
96
96
  end
97
97
 
98
98
  describe '#resource_loaded' do
99
99
  it 'should return true if the resource is cached, false otherwise' do
100
100
  loader.preload_resources_for_locale(:de, :numbers)
101
- loader.resource_loaded?(:locales, :de, :numbers).should be_true
102
- loader.resource_loaded?(:locales, :de, :calendars).should be_false
101
+ expect(loader.resource_loaded?(:locales, :de, :numbers)).to be_true
102
+ expect(loader.resource_loaded?(:locales, :de, :calendars)).to be_false
103
103
  end
104
104
  end
105
105
 
106
106
  describe '#locale_resource_loaded' do
107
107
  it 'should return true if the locale resource is cached, false otherwise' do
108
108
  loader.preload_resources_for_locale(:de, :numbers)
109
- loader.locale_resource_loaded?(:de, :numbers).should be_true
110
- loader.locale_resource_loaded?(:de, :calendars).should be_false
109
+ expect(loader.locale_resource_loaded?(:de, :numbers)).to be_true
110
+ expect(loader.locale_resource_loaded?(:de, :calendars)).to be_false
111
111
  end
112
112
  end
113
113
 
114
114
  describe '#resource_types' do
115
115
  it 'returns the list of available resource types' do
116
116
  types = loader.resource_types
117
- types.should be_a(Array)
118
- types.should include(:calendars)
119
- types.should include(:numbers)
120
- types.should include(:units)
117
+ expect(types).to be_a(Array)
118
+ expect(types).to include(:calendars)
119
+ expect(types).to include(:numbers)
120
+ expect(types).to include(:units)
121
121
  end
122
122
  end
123
123
 
124
124
  describe '#preload_resources_for_locale' do
125
125
  it 'loads potentially multiple resources into the cache' do
126
126
  loader.preload_resources_for_locale(:ar, :calendars, :units)
127
- loader.locale_resource_loaded?(:ar, :calendars).should be_true
128
- loader.locale_resource_loaded?(:ar, :units).should be_true
129
- loader.locale_resource_loaded?(:en, :units).should be_false
127
+ expect(loader.locale_resource_loaded?(:ar, :calendars)).to be_true
128
+ expect(loader.locale_resource_loaded?(:ar, :units)).to be_true
129
+ expect(loader.locale_resource_loaded?(:en, :units)).to be_false
130
130
  end
131
131
 
132
132
  it 'loads all resources for the locale if the :all resource type is specified' do
133
133
  loader.preload_resources_for_locale(:ar, :all)
134
134
  loader.resource_types.each do |resource_type|
135
- loader.locale_resource_loaded?(:ar, resource_type).should be_true
136
- loader.locale_resource_loaded?(:en, resource_type).should be_false
135
+ expect(loader.locale_resource_loaded?(:ar, resource_type)).to be_true
136
+ expect(loader.locale_resource_loaded?(:en, resource_type)).to be_false
137
137
  end
138
138
  end
139
139
  end
@@ -141,9 +141,9 @@ describe Loader do
141
141
  describe '#preload_resource_for_locales' do
142
142
  it 'loads a single resource for potentially multiple locales into the cache' do
143
143
  loader.preload_resource_for_locales(:calendars, :sv, :bn)
144
- loader.locale_resource_loaded?(:sv, :calendars).should be_true
145
- loader.locale_resource_loaded?(:bn, :calendars).should be_true
146
- loader.locale_resource_loaded?(:sv, :units).should be_false
144
+ expect(loader.locale_resource_loaded?(:sv, :calendars)).to be_true
145
+ expect(loader.locale_resource_loaded?(:bn, :calendars)).to be_true
146
+ expect(loader.locale_resource_loaded?(:sv, :units)).to be_false
147
147
  end
148
148
  end
149
149
 
@@ -151,9 +151,9 @@ describe Loader do
151
151
  it 'loads potentially multiple resources for all locales' do
152
152
  loader.preload_resources_for_all_locales(:plurals, :lists)
153
153
  TwitterCldr.supported_locales.each do |locale|
154
- loader.locale_resource_loaded?(locale, :plurals).should be_true
155
- loader.locale_resource_loaded?(locale, :lists).should be_true
156
- loader.locale_resource_loaded?(locale, :calendars).should be_false
154
+ expect(loader.locale_resource_loaded?(locale, :plurals)).to be_true
155
+ expect(loader.locale_resource_loaded?(locale, :lists)).to be_true
156
+ expect(loader.locale_resource_loaded?(locale, :calendars)).to be_false
157
157
  end
158
158
  end
159
159
  end
@@ -163,7 +163,7 @@ describe Loader do
163
163
  loader.preload_all_resources
164
164
  TwitterCldr.supported_locales.each do |locale|
165
165
  loader.resource_types.each do |resource_type|
166
- loader.locale_resource_loaded?(locale, resource_type).should be_true
166
+ expect(loader.locale_resource_loaded?(locale, resource_type)).to be_true
167
167
  end
168
168
  end
169
169
  end
@@ -12,47 +12,47 @@ describe BreakIterator do
12
12
  let(:iterator) { BreakIterator.new(:en, :use_uli_exceptions => true) }
13
13
 
14
14
  it "should return an enumerator if called without a block" do
15
- iterator.each_sentence("foo bar").should be_a(Enumerator)
15
+ expect(iterator.each_sentence("foo bar")).to be_a(Enumerator)
16
16
  end
17
17
 
18
18
  it "splits a simple string into sentences" do
19
19
  str = "The. Quick. Brown. Fox."
20
- iterator.each_sentence(str).to_a.should == [
20
+ expect(iterator.each_sentence(str).to_a).to eq([
21
21
  "The.", " Quick.", " Brown.", " Fox."
22
- ]
22
+ ])
23
23
  end
24
24
 
25
25
  it "does not split on commas, for example" do
26
26
  str = "The. Quick, brown. Fox."
27
- iterator.each_sentence(str).to_a.should == [
27
+ expect(iterator.each_sentence(str).to_a).to eq([
28
28
  "The.", " Quick, brown.", " Fox."
29
- ]
29
+ ])
30
30
  end
31
31
 
32
32
  it "does not split periods in the midst of other letters, eg. in a URL" do
33
33
  str = "Visit us. Go to http://translate.twitter.com."
34
- iterator.each_sentence(str).to_a.should == [
34
+ expect(iterator.each_sentence(str).to_a).to eq([
35
35
  "Visit us.",
36
36
  " Go to http://translate.twitter.com."
37
- ]
37
+ ])
38
38
  end
39
39
 
40
40
  it "splits on sentences that end with other kinds of punctuation" do
41
41
  str = "Help us translate! Speak another language? You really, really rock."
42
- iterator.each_sentence(str).to_a.should == [
42
+ expect(iterator.each_sentence(str).to_a).to eq([
43
43
  "Help us translate!",
44
44
  " Speak another language?",
45
45
  " You really, really rock."
46
- ]
46
+ ])
47
47
  end
48
48
 
49
49
  context "with ULI exceptions" do
50
50
  it "does not split on certain abbreviations like Mr. and Mrs." do
51
51
  str = "I really like Mrs. Patterson. She's nice."
52
- iterator.each_sentence(str).to_a.should == [
52
+ expect(iterator.each_sentence(str).to_a).to eq([
53
53
  "I really like Mrs. Patterson.",
54
54
  " She's nice."
55
- ]
55
+ ])
56
56
  end
57
57
  end
58
58
 
@@ -61,11 +61,11 @@ describe BreakIterator do
61
61
 
62
62
  it "splits on certain abbreviations like Mr. and Mrs. (use ULI rules to avoid this behavior)" do
63
63
  str = "I really like Mrs. Patterson. She's nice."
64
- iterator.each_sentence(str).to_a.should == [
64
+ expect(iterator.each_sentence(str).to_a).to eq([
65
65
  "I really like Mrs.",
66
66
  " Patterson.",
67
67
  " She's nice."
68
- ]
68
+ ])
69
69
  end
70
70
  end
71
71
  end
@@ -22,20 +22,20 @@ describe Calendar do
22
22
  stub(TwitterCldr).locale { :fr }
23
23
  cal = Calendar.new
24
24
 
25
- cal.locale.should == :fr
26
- cal.calendar_type.should == TwitterCldr::DEFAULT_CALENDAR_TYPE
25
+ expect(cal.locale).to eq(:fr)
26
+ expect(cal.calendar_type).to eq(TwitterCldr::DEFAULT_CALENDAR_TYPE)
27
27
  end
28
28
 
29
29
  it 'returns calendar for a specific locale' do
30
- Calendar.new(:jp).locale.should == :jp
30
+ expect(Calendar.new(:jp).locale).to eq(:jp)
31
31
  end
32
32
 
33
33
  it 'uses TwitterCldr.convert_locale' do
34
- Calendar.new(:'zh-cn').locale.should == :zh
34
+ expect(Calendar.new(:'zh-cn').locale).to eq(:zh)
35
35
  end
36
36
 
37
37
  it 'returns calendar of a specific type' do
38
- Calendar.new(:th, :buddhist).calendar_type.should == :buddhist
38
+ expect(Calendar.new(:th, :buddhist).calendar_type).to eq(:buddhist)
39
39
  end
40
40
 
41
41
  end
@@ -43,35 +43,35 @@ describe Calendar do
43
43
  describe '#months' do
44
44
  context 'when data is available' do
45
45
  it 'returns months list in a wide names form by default' do
46
- calendar.months.should == %w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember]
46
+ expect(calendar.months).to eq(%w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember])
47
47
  end
48
48
 
49
49
  it 'supports wide names form' do
50
- calendar.months(:wide).should == %w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember]
50
+ expect(calendar.months(:wide)).to eq(%w[Januar Februar März April Mai Juni Juli August September Oktober November Dezember])
51
51
  end
52
52
 
53
53
  it 'supports narrow names form' do
54
- calendar.months(:narrow).should == %w[J F M A M J J A S O N D]
54
+ expect(calendar.months(:narrow)).to eq(%w[J F M A M J J A S O N D])
55
55
  end
56
56
 
57
57
  it 'supports abbreviated names form' do
58
- calendar.months(:abbreviated).should == %w[Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez]
58
+ expect(calendar.months(:abbreviated)).to eq(%w[Jan Feb Mär Apr Mai Jun Jul Aug Sep Okt Nov Dez])
59
59
  end
60
60
 
61
61
  it 'returns nil if invalid names form is passed' do
62
- calendar.months(:wat).should == nil
62
+ expect(calendar.months(:wat)).to eq(nil)
63
63
  end
64
64
  end
65
65
 
66
66
  context 'when some data is missing' do
67
67
  it 'returns nil if some names format is missing' do
68
68
  stub(TwitterCldr).get_locale_resource { { :de => { :calendars => { :gregorian => { :months => { :'stand-alone' => {} } } } } } }
69
- calendar.months(:wide).should == nil
69
+ expect(calendar.months(:wide)).to eq(nil)
70
70
  end
71
71
 
72
72
  it 'returns nil if calendars data is missing' do
73
73
  stub(TwitterCldr).get_locale_resource { { :de => {} } }
74
- calendar.months(:wide).should == nil
74
+ expect(calendar.months(:wide)).to eq(nil)
75
75
  end
76
76
  end
77
77
  end
@@ -79,7 +79,7 @@ describe Calendar do
79
79
  describe '#weekdays' do
80
80
  context 'when data is available' do
81
81
  it 'returns weekdays list in a wide names form by default' do
82
- calendar.weekdays.should == {
82
+ expect(calendar.weekdays).to eq({
83
83
  :sun => 'Sonntag',
84
84
  :mon => 'Montag',
85
85
  :tue => 'Dienstag',
@@ -87,11 +87,11 @@ describe Calendar do
87
87
  :thu => 'Donnerstag',
88
88
  :fri => 'Freitag',
89
89
  :sat => 'Samstag'
90
- }
90
+ })
91
91
  end
92
92
 
93
93
  it 'supports wide names form' do
94
- calendar.weekdays(:wide).should == {
94
+ expect(calendar.weekdays(:wide)).to eq({
95
95
  :sun => 'Sonntag',
96
96
  :mon => 'Montag',
97
97
  :tue => 'Dienstag',
@@ -99,15 +99,15 @@ describe Calendar do
99
99
  :thu => 'Donnerstag',
100
100
  :fri => 'Freitag',
101
101
  :sat => 'Samstag'
102
- }
102
+ })
103
103
  end
104
104
 
105
105
  it 'supports narrow names form' do
106
- calendar.weekdays(:narrow).should == { :sun => 'S', :mon => 'M', :tue => 'D', :wed => 'M', :thu => 'D', :fri => 'F', :sat => 'S' }
106
+ expect(calendar.weekdays(:narrow)).to eq({ :sun => 'S', :mon => 'M', :tue => 'D', :wed => 'M', :thu => 'D', :fri => 'F', :sat => 'S' })
107
107
  end
108
108
 
109
109
  it 'supports abbreviated names form' do
110
- calendar.weekdays(:abbreviated).should == {
110
+ expect(calendar.weekdays(:abbreviated)).to eq({
111
111
  :sun => 'So',
112
112
  :mon => 'Mo',
113
113
  :tue => 'Di',
@@ -115,23 +115,23 @@ describe Calendar do
115
115
  :thu => 'Do',
116
116
  :fri => 'Fr',
117
117
  :sat => 'Sa'
118
- }
118
+ })
119
119
  end
120
120
 
121
121
  it 'returns nil if invalid names form is passed' do
122
- calendar.weekdays(:wat).should == nil
122
+ expect(calendar.weekdays(:wat)).to eq(nil)
123
123
  end
124
124
  end
125
125
 
126
126
  context 'when some data is missing' do
127
127
  it 'returns nil if some names format is missing' do
128
128
  stub(TwitterCldr).get_locale_resource { { :de => { :calendars => { :gregorian => { :days => { :'stand-alone' => {} } } } } } }
129
- calendar.weekdays(:wide).should == nil
129
+ expect(calendar.weekdays(:wide)).to eq(nil)
130
130
  end
131
131
 
132
132
  it 'returns nil if calendars data is missing' do
133
133
  stub(TwitterCldr).get_locale_resource { { :de => {} } }
134
- calendar.weekdays(:wide).should == nil
134
+ expect(calendar.weekdays(:wide)).to eq(nil)
135
135
  end
136
136
  end
137
137
  end
@@ -139,117 +139,117 @@ describe Calendar do
139
139
  describe '#fields' do
140
140
  it 'returns the list of fields for the locale (eg. weekday, month, etc)' do
141
141
  fields = calendar.fields
142
- fields[:hour].should match_normalized("Stunde")
143
- fields[:dayperiod].should match_normalized("Tageshälfte")
144
- fields[:weekday].should match_normalized("Wochentag")
142
+ expect(fields[:hour]).to match_normalized("Stunde")
143
+ expect(fields[:dayperiod]).to match_normalized("Tageshälfte")
144
+ expect(fields[:weekday]).to match_normalized("Wochentag")
145
145
 
146
146
  fields = Calendar.new(:ja).fields
147
- fields[:hour].should match_normalized("時")
148
- fields[:dayperiod].should match_normalized("午前/午後")
149
- fields[:weekday].should match_normalized("曜日")
147
+ expect(fields[:hour]).to match_normalized("時")
148
+ expect(fields[:dayperiod]).to match_normalized("午前/午後")
149
+ expect(fields[:weekday]).to match_normalized("曜日")
150
150
  end
151
151
  end
152
152
 
153
153
  describe '#quarters' do
154
154
  it 'returns default quarters' do
155
- calendar.quarters.should == {
155
+ expect(calendar.quarters).to eq({
156
156
  1 => "1. Quartal",
157
157
  2 => "2. Quartal",
158
158
  3 => "3. Quartal",
159
159
  4 => "4. Quartal"
160
- }
160
+ })
161
161
  end
162
162
 
163
163
  it 'returns quarters with other name forms' do
164
- calendar.quarters(:abbreviated).should == {
164
+ expect(calendar.quarters(:abbreviated)).to eq({
165
165
  1 => "Q1", 2 => "Q2",
166
166
  3 => "Q3", 4 => "Q4"
167
- }
167
+ })
168
168
 
169
- calendar.quarters(:narrow).should == {
169
+ expect(calendar.quarters(:narrow)).to eq({
170
170
  1 => 1, 2 => 2,
171
171
  3 => 3, 4 => 4
172
- }
172
+ })
173
173
  end
174
174
  end
175
175
 
176
176
  describe '#periods' do
177
177
  it 'returns default periods' do
178
178
  periods = calendar.periods
179
- periods[:am].should == "vorm."
180
- periods[:pm].should == "nachm."
179
+ expect(periods[:am]).to eq("vorm.")
180
+ expect(periods[:pm]).to eq("nachm.")
181
181
  end
182
182
 
183
183
  it 'returns quarters with other name forms' do
184
184
  periods = calendar.periods(:abbreviated)
185
- periods[:am].should == "vorm."
186
- periods[:pm].should == "nachm."
185
+ expect(periods[:am]).to eq("vorm.")
186
+ expect(periods[:pm]).to eq("nachm.")
187
187
  end
188
188
  end
189
189
 
190
190
  describe '#eras' do
191
191
  it 'returns default eras' do
192
- calendar.eras.should == {
192
+ expect(calendar.eras).to eq({
193
193
  0 => "vor der gewöhnlichen Zeitrechnung",
194
194
  1 => "der gewöhnlichen Zeitrechnung"
195
- }
195
+ })
196
196
  end
197
197
 
198
198
  it 'returns eras with other name forms' do
199
- calendar.eras(:abbr).should == {
199
+ expect(calendar.eras(:abbr)).to eq({
200
200
  0 => "v. u. Z.",
201
201
  1 => "u. Z."
202
- }
202
+ })
203
203
  end
204
204
  end
205
205
 
206
206
  describe '#date_order' do
207
207
  it 'should return the correct date order for a few different locales' do
208
- Calendar.new(:en).date_order.should == [:month, :day, :year]
209
- Calendar.new(:ja).date_order.should == [:year, :month, :day]
210
- Calendar.new(:ar).date_order.should == [:day, :month, :year]
208
+ expect(Calendar.new(:en).date_order).to eq([:month, :day, :year])
209
+ expect(Calendar.new(:ja).date_order).to eq([:year, :month, :day])
210
+ expect(Calendar.new(:ar).date_order).to eq([:day, :month, :year])
211
211
  end
212
212
  end
213
213
 
214
214
  describe '#time_order' do
215
215
  it 'should return the correct time order for a few different locales' do
216
- Calendar.new(:en).time_order.should == [:hour, :minute, :second, :period]
217
- Calendar.new(:ja).time_order.should == [:hour, :minute, :second]
218
- Calendar.new(:ar).time_order.should == [:hour, :minute, :second, :period]
216
+ expect(Calendar.new(:en).time_order).to eq([:hour, :minute, :second, :period])
217
+ expect(Calendar.new(:ja).time_order).to eq([:hour, :minute, :second])
218
+ expect(Calendar.new(:ar).time_order).to eq([:hour, :minute, :second, :period])
219
219
  end
220
220
  end
221
221
 
222
222
  describe '#datetime_order' do
223
223
  it 'should return the correct date and time order for a few different locales' do
224
- Calendar.new(:en).datetime_order.should == [:month, :day, :year, :hour, :minute, :second, :period]
225
- Calendar.new(:ja).datetime_order.should == [:year, :month, :day, :hour, :minute, :second]
226
- Calendar.new(:ar).datetime_order.should == [:day, :month, :year, :hour, :minute, :second, :period]
224
+ expect(Calendar.new(:en).datetime_order).to eq([:month, :day, :year, :hour, :minute, :second, :period])
225
+ expect(Calendar.new(:ja).datetime_order).to eq([:year, :month, :day, :hour, :minute, :second])
226
+ expect(Calendar.new(:ar).datetime_order).to eq([:day, :month, :year, :hour, :minute, :second, :period])
227
227
  end
228
228
  end
229
229
 
230
230
  describe '#methods_for_tokens' do
231
231
  it 'converts pattern tokens into their corresponding method names' do
232
232
  tokens = [TwitterCldr::Tokenizers::Token.new(:value => "YYYY", :type => :pattern)]
233
- calendar.send(:methods_for_tokens, tokens).should == [:year_of_week_of_year]
233
+ expect(calendar.send(:methods_for_tokens, tokens)).to eq([:year_of_week_of_year])
234
234
  end
235
235
 
236
236
  it 'ignores plaintext tokens' do
237
237
  tokens = [TwitterCldr::Tokenizers::Token.new(:value => "blarg", :type => :plaintext)]
238
- calendar.send(:methods_for_tokens, tokens).should == []
238
+ expect(calendar.send(:methods_for_tokens, tokens)).to eq([])
239
239
  end
240
240
  end
241
241
 
242
242
  describe '#resolve_methods' do
243
243
  it 'converts certain method names to their basic equivalents' do
244
- calendar.send(:resolve_methods, [:year_of_week_of_year]).should == [:year]
245
- calendar.send(:resolve_methods, [:weekday_local]).should == [:weekday]
246
- calendar.send(:resolve_methods, [:day_of_month, :second_fraction]).should == [:day, :second]
244
+ expect(calendar.send(:resolve_methods, [:year_of_week_of_year])).to eq([:year])
245
+ expect(calendar.send(:resolve_methods, [:weekday_local])).to eq([:weekday])
246
+ expect(calendar.send(:resolve_methods, [:day_of_month, :second_fraction])).to eq([:day, :second])
247
247
  end
248
248
 
249
249
  it 'does not convert basic method names' do
250
- calendar.send(:resolve_methods, [:year]).should == [:year]
251
- calendar.send(:resolve_methods, [:day, :month]).should == [:day, :month]
252
- calendar.send(:resolve_methods, [:minute, :hour, :second]).should == [:minute, :hour, :second]
250
+ expect(calendar.send(:resolve_methods, [:year])).to eq([:year])
251
+ expect(calendar.send(:resolve_methods, [:day, :month])).to eq([:day, :month])
252
+ expect(calendar.send(:resolve_methods, [:minute, :hour, :second])).to eq([:minute, :hour, :second])
253
253
  end
254
254
  end
255
255