2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2023-05-09 02:15:28 +02:00
|
|
|
require "macos_version"
|
2017-02-21 05:54:16 +01:00
|
|
|
|
2023-05-09 02:15:28 +02:00
|
|
|
describe MacOSVersion do
|
2020-11-23 10:14:18 +01:00
|
|
|
let(:version) { described_class.new("10.14") }
|
|
|
|
let(:big_sur_major) { described_class.new("11.0") }
|
|
|
|
let(:big_sur_update) { described_class.new("11.1") }
|
2017-02-21 05:54:16 +01:00
|
|
|
|
|
|
|
specify "comparison with Symbol" do
|
2020-10-05 14:46:43 +02:00
|
|
|
expect(version).to be > :high_sierra
|
|
|
|
expect(version).to be == :mojave
|
|
|
|
expect(version).to be === :mojave # rubocop:disable Style/CaseEquality
|
|
|
|
expect(version).to be < :catalina
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
|
|
|
|
2023-04-29 23:39:26 +02:00
|
|
|
specify "comparison with Integer" do
|
2020-10-05 14:46:43 +02:00
|
|
|
expect(version).to be > 10
|
|
|
|
expect(version).to be < 11
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
specify "comparison with String" do
|
2020-10-05 14:46:43 +02:00
|
|
|
expect(version).to be > "10.3"
|
|
|
|
expect(version).to be == "10.14"
|
|
|
|
expect(version).to be === "10.14" # rubocop:disable Style/CaseEquality
|
|
|
|
expect(version).to be < "10.15"
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
specify "comparison with Version" do
|
2023-07-06 16:47:09 +01:00
|
|
|
expect(version).to be > Version.new("10.3")
|
|
|
|
expect(version).to be == Version.new("10.14")
|
|
|
|
expect(version).to be === Version.new("10.14") # rubocop:disable Style/CaseEquality
|
|
|
|
expect(version).to be < Version.new("10.15")
|
2020-10-05 14:46:43 +02:00
|
|
|
end
|
|
|
|
|
2021-02-21 01:02:57 +00:00
|
|
|
describe "after Big Sur" do
|
2020-11-23 10:14:18 +01:00
|
|
|
specify "comparison with :big_sur" do
|
|
|
|
expect(big_sur_major).to eq :big_sur
|
|
|
|
expect(big_sur_major).to be <= :big_sur
|
|
|
|
expect(big_sur_major).to be >= :big_sur
|
|
|
|
expect(big_sur_major).not_to be > :big_sur
|
|
|
|
expect(big_sur_major).not_to be < :big_sur
|
|
|
|
|
|
|
|
expect(big_sur_update).to eq :big_sur
|
|
|
|
expect(big_sur_update).to be <= :big_sur
|
|
|
|
expect(big_sur_update).to be >= :big_sur
|
|
|
|
expect(big_sur_update).not_to be > :big_sur
|
|
|
|
expect(big_sur_update).not_to be < :big_sur
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
2020-10-05 14:46:43 +02:00
|
|
|
describe "#new" do
|
|
|
|
it "raises an error if the version is not a valid macOS version" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2020-10-05 14:46:43 +02:00
|
|
|
described_class.new("1.2")
|
2023-05-09 02:15:28 +02:00
|
|
|
end.to raise_error(MacOSVersion::Error, 'unknown or unsupported macOS version: "1.2"')
|
2020-10-05 14:46:43 +02:00
|
|
|
end
|
2020-12-09 11:55:27 +00:00
|
|
|
|
|
|
|
it "creates a new version from a valid macOS version" do
|
|
|
|
string_version = described_class.new("11")
|
|
|
|
expect(string_version).to eq(:big_sur)
|
|
|
|
end
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
|
|
|
|
2020-12-09 11:55:27 +00:00
|
|
|
describe "#from_symbol" do
|
|
|
|
it "raises an error if the symbol is not a valid macOS version" do
|
2023-03-08 23:14:46 +00:00
|
|
|
expect do
|
2020-12-09 11:55:27 +00:00
|
|
|
described_class.from_symbol(:foo)
|
2023-05-09 02:15:28 +02:00
|
|
|
end.to raise_error(MacOSVersion::Error, "unknown or unsupported macOS version: :foo")
|
2020-12-09 11:55:27 +00:00
|
|
|
end
|
|
|
|
|
|
|
|
it "creates a new version from a valid macOS version" do
|
|
|
|
symbol_version = described_class.from_symbol(:mojave)
|
|
|
|
expect(symbol_version).to eq(version)
|
|
|
|
end
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
|
|
|
|
|
|
|
specify "#pretty_name" do
|
|
|
|
expect(described_class.new("10.11").pretty_name).to eq("El Capitan")
|
2019-01-26 17:13:14 +00:00
|
|
|
expect(described_class.new("10.14").pretty_name).to eq("Mojave")
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|
2019-01-28 19:31:21 +00:00
|
|
|
|
2023-05-09 02:15:28 +02:00
|
|
|
specify "#requires_nehalem_cpu?", :needs_macos do
|
2020-07-08 20:53:10 +02:00
|
|
|
expect(Hardware::CPU).to receive(:type).at_least(:twice).and_return(:intel)
|
2019-01-28 19:31:21 +00:00
|
|
|
expect(described_class.new("10.14").requires_nehalem_cpu?).to be true
|
|
|
|
expect(described_class.new("10.12").requires_nehalem_cpu?).to be false
|
|
|
|
end
|
2017-02-21 05:54:16 +01:00
|
|
|
end
|