Sha256: 3a29e0fa67e85812dd8fc8e058453daab4630e2f8f3260f7e9c9a11fa2935deb

Contents?: true

Size: 828 Bytes

Versions: 6

Compression:

Stored size: 828 Bytes

Contents

# backtick_javascript: true

describe "Array#dup" do
  it "should use slice optimization" do
    a = Array.new
    `a.slice = function() { return ['sliced'] }`
    lambda { a.dup }.should_not raise_error
    a.dup.should == ['sliced']
  end

  it "should use slice optimization on Array subclass" do
    subclass = Class.new(Array)
    a = subclass.new
    `a.slice = function() { return ['sliced'] }`
    lambda { a.dup }.should_not raise_error
    a.dup.should == ['sliced']
  end

  it "should not use slice optimization when allocation is redefined" do
    subclass = Class.new(Array)
    a = subclass.new
    subclass.define_singleton_method(:allocate) { raise 'Overriden method, no slice optimization for you!' }
    lambda { a.dup }.should raise_error # dup should call allocate because the method is overriden
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
opal-1.8.3.rc1 spec/opal/core/array/dup_spec.rb
opal-1.8.2 spec/opal/core/array/dup_spec.rb
opal-1.8.1 spec/opal/core/array/dup_spec.rb
opal-1.8.0 spec/opal/core/array/dup_spec.rb
opal-1.8.0.beta1 spec/opal/core/array/dup_spec.rb
opal-1.8.0.alpha1 spec/opal/core/array/dup_spec.rb