Merge pull request #15216 from ZhongRuoyu/locale
test/cask/dsl_spec: fix test for certain locale settings
This commit is contained in:
commit
688b732ea0
@ -17,14 +17,14 @@ class Locale
|
|||||||
LANGUAGE_REGEX = /(?:[a-z]{2,3})/.freeze
|
LANGUAGE_REGEX = /(?:[a-z]{2,3})/.freeze
|
||||||
private_constant :LANGUAGE_REGEX
|
private_constant :LANGUAGE_REGEX
|
||||||
|
|
||||||
# ISO 3166-1 or UN M.49
|
|
||||||
REGION_REGEX = /(?:[A-Z]{2}|\d{3})/.freeze
|
|
||||||
private_constant :REGION_REGEX
|
|
||||||
|
|
||||||
# ISO 15924
|
# ISO 15924
|
||||||
SCRIPT_REGEX = /(?:[A-Z][a-z]{3})/.freeze
|
SCRIPT_REGEX = /(?:[A-Z][a-z]{3})/.freeze
|
||||||
private_constant :SCRIPT_REGEX
|
private_constant :SCRIPT_REGEX
|
||||||
|
|
||||||
|
# ISO 3166-1 or UN M.49
|
||||||
|
REGION_REGEX = /(?:[A-Z]{2}|\d{3})/.freeze
|
||||||
|
private_constant :REGION_REGEX
|
||||||
|
|
||||||
LOCALE_REGEX = /\A((?:#{LANGUAGE_REGEX}|#{REGION_REGEX}|#{SCRIPT_REGEX})(?:-|$)){1,3}\Z/.freeze
|
LOCALE_REGEX = /\A((?:#{LANGUAGE_REGEX}|#{REGION_REGEX}|#{SCRIPT_REGEX})(?:-|$)){1,3}\Z/.freeze
|
||||||
private_constant :LOCALE_REGEX
|
private_constant :LOCALE_REGEX
|
||||||
|
|
||||||
@ -56,18 +56,18 @@ class Locale
|
|||||||
|
|
||||||
return unless scanner.eos?
|
return unless scanner.eos?
|
||||||
|
|
||||||
new(language, region, script)
|
new(language, script, region)
|
||||||
end
|
end
|
||||||
|
|
||||||
attr_reader :language, :region, :script
|
attr_reader :language, :script, :region
|
||||||
|
|
||||||
def initialize(language, region, script)
|
def initialize(language, script, region)
|
||||||
raise ArgumentError, "#{self.class} cannot be empty" if language.nil? && region.nil? && script.nil?
|
raise ArgumentError, "#{self.class} cannot be empty" if language.nil? && region.nil? && script.nil?
|
||||||
|
|
||||||
{
|
{
|
||||||
language: language,
|
language: language,
|
||||||
region: region,
|
|
||||||
script: script,
|
script: script,
|
||||||
|
region: region,
|
||||||
}.each do |key, value|
|
}.each do |key, value|
|
||||||
next if value.nil?
|
next if value.nil?
|
||||||
|
|
||||||
@ -84,7 +84,7 @@ class Locale
|
|||||||
return false if other.nil?
|
return false if other.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
[:language, :region, :script].all? do |var|
|
[:language, :script, :region].all? do |var|
|
||||||
if other.public_send(var).nil?
|
if other.public_send(var).nil?
|
||||||
true
|
true
|
||||||
else
|
else
|
||||||
@ -99,7 +99,7 @@ class Locale
|
|||||||
return false if other.nil?
|
return false if other.nil?
|
||||||
end
|
end
|
||||||
|
|
||||||
[:language, :region, :script].all? do |var|
|
[:language, :script, :region].all? do |var|
|
||||||
public_send(var) == other.public_send(var)
|
public_send(var) == other.public_send(var)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -112,6 +112,6 @@ class Locale
|
|||||||
|
|
||||||
sig { returns(String) }
|
sig { returns(String) }
|
||||||
def to_s
|
def to_s
|
||||||
[@language, @region, @script].compact.join("-")
|
[@language, @script, @region].compact.join("-")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
@ -165,7 +165,7 @@ describe Cask::DSL, :cask do
|
|||||||
"zh-CN"
|
"zh-CN"
|
||||||
end
|
end
|
||||||
|
|
||||||
language "en-US", default: true do
|
language "en", default: true do
|
||||||
sha256 "xyz789"
|
sha256 "xyz789"
|
||||||
"en-US"
|
"en-US"
|
||||||
end
|
end
|
||||||
|
|||||||
@ -7,13 +7,13 @@ describe Locale do
|
|||||||
describe "::parse" do
|
describe "::parse" do
|
||||||
it "parses a string in the correct format" do
|
it "parses a string in the correct format" do
|
||||||
expect(described_class.parse("zh")).to eql(described_class.new("zh", nil, nil))
|
expect(described_class.parse("zh")).to eql(described_class.new("zh", nil, nil))
|
||||||
expect(described_class.parse("zh-CN")).to eql(described_class.new("zh", "CN", nil))
|
expect(described_class.parse("zh-CN")).to eql(described_class.new("zh", nil, "CN"))
|
||||||
expect(described_class.parse("zh-Hans")).to eql(described_class.new("zh", nil, "Hans"))
|
expect(described_class.parse("zh-Hans")).to eql(described_class.new("zh", "Hans", nil))
|
||||||
expect(described_class.parse("zh-Hans-CN")).to eql(described_class.new("zh", "CN", "Hans"))
|
expect(described_class.parse("zh-Hans-CN")).to eql(described_class.new("zh", "Hans", "CN"))
|
||||||
end
|
end
|
||||||
|
|
||||||
it "correctly parses a string with a UN M.49 region code" do
|
it "correctly parses a string with a UN M.49 region code" do
|
||||||
expect(described_class.parse("es-419")).to eql(described_class.new("es", "419", nil))
|
expect(described_class.parse("es-419")).to eql(described_class.new("es", nil, "419"))
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "raises a ParserError when given" do
|
describe "raises a ParserError when given" do
|
||||||
@ -42,13 +42,13 @@ describe Locale do
|
|||||||
|
|
||||||
it "raises a ParserError when one of the arguments does not match the locale format" do
|
it "raises a ParserError when one of the arguments does not match the locale format" do
|
||||||
expect { described_class.new("ZH", nil, nil) }.to raise_error(Locale::ParserError)
|
expect { described_class.new("ZH", nil, nil) }.to raise_error(Locale::ParserError)
|
||||||
expect { described_class.new(nil, "cn", nil) }.to raise_error(Locale::ParserError)
|
expect { described_class.new(nil, "hans", nil) }.to raise_error(Locale::ParserError)
|
||||||
expect { described_class.new(nil, nil, "hans") }.to raise_error(Locale::ParserError)
|
expect { described_class.new(nil, nil, "cn") }.to raise_error(Locale::ParserError)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#include?" do
|
describe "#include?" do
|
||||||
subject { described_class.new("zh", "CN", "Hans") }
|
subject { described_class.new("zh", "Hans", "CN") }
|
||||||
|
|
||||||
it { is_expected.to include("zh") }
|
it { is_expected.to include("zh") }
|
||||||
it { is_expected.to include("zh-CN") }
|
it { is_expected.to include("zh-CN") }
|
||||||
@ -59,7 +59,7 @@ describe Locale do
|
|||||||
end
|
end
|
||||||
|
|
||||||
describe "#eql?" do
|
describe "#eql?" do
|
||||||
subject(:locale) { described_class.new("zh", "CN", "Hans") }
|
subject(:locale) { described_class.new("zh", "Hans", "CN") }
|
||||||
|
|
||||||
context "when all parts match" do
|
context "when all parts match" do
|
||||||
it { is_expected.to eql("zh-Hans-CN") }
|
it { is_expected.to eql("zh-Hans-CN") }
|
||||||
@ -84,9 +84,9 @@ describe Locale do
|
|||||||
let(:locale_groups) { [["zh"], ["zh-TW"]] }
|
let(:locale_groups) { [["zh"], ["zh-TW"]] }
|
||||||
|
|
||||||
it "finds best matching language code, independent of order" do
|
it "finds best matching language code, independent of order" do
|
||||||
expect(described_class.new("zh", "TW", nil).detect(locale_groups)).to eql(["zh-TW"])
|
expect(described_class.new("zh", nil, "TW").detect(locale_groups)).to eql(["zh-TW"])
|
||||||
expect(described_class.new("zh", "TW", nil).detect(locale_groups.reverse)).to eql(["zh-TW"])
|
expect(described_class.new("zh", nil, "TW").detect(locale_groups.reverse)).to eql(["zh-TW"])
|
||||||
expect(described_class.new("zh", "CN", "Hans").detect(locale_groups)).to eql(["zh"])
|
expect(described_class.new("zh", "Hans", "CN").detect(locale_groups)).to eql(["zh"])
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user