summaryrefslogtreecommitdiff
path: root/spec/ruby/core/range/frozen_spec.rb
blob: 9a3e6eb373d489414bdca793add60059dfb690e4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
require_relative '../../spec_helper'

# There is no Range#frozen? method but this feels like the best place for these specs
describe "Range#frozen?" do
  ruby_version_is "3.0" do
    it "is true for literal ranges" do
      (1..2).should.frozen?
      (1..).should.frozen?
      eval("(..1)").should.frozen?
    end

    it "is true for Range.new" do
      Range.new(1, 2).should.frozen?
      Range.new(1, nil).should.frozen?
      Range.new(nil, 1).should.frozen?
    end

    it "is false for instances of a subclass of Range" do
      sub_range = Class.new(Range).new(1, 2)
      sub_range.should_not.frozen?
    end

    it "is false for Range.allocate" do
      Range.allocate.should_not.frozen?
    end
  end
end