Sha256: fc69122379a18563bb2cebb00afdb186c2cdedaee6d42417af7c4f954b17ac63

Contents?: true

Size: 954 Bytes

Versions: 7

Compression:

Stored size: 954 Bytes

Contents

require 'spec_helper'

require 'hamster/immutable'

describe Hamster::Immutable do

  describe "#memoize" do

    class Fixture
      include Hamster::Immutable

      def initialize(&block)
        @block = block
      end

      def call
        @block.call
      end
      memoize :call

      def copy
        transform {}
      end

    end

    before do
      @count = 0
      @fixture = Fixture.new { @count += 1 }
      @fixture.call
    end

    it "should still freezes be immutable" do
      @fixture.should be_immutable
    end

    describe "when called multiple times" do

      before do
        @fixture.call
      end

      it "a memoized method will only be evaluated once" do
        @count.should == 1
      end

    end

    describe "when making a copy" do

      before do
        @copy = @fixture.copy
        @copy.call
      end

      it "should clear all memory" do
        @count.should == 2
      end

    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
hamster-0.4.3 spec/hamster/immutable/memoize_spec.rb
hamster-0.4.2 spec/hamster/immutable/memoize_spec.rb
hamster-0.4.0 spec/hamster/immutable/memoize_spec.rb
hamster-0.3.10 spec/hamster/immutable/memoize_spec.rb
hamster-0.3.9 spec/hamster/immutable/memoize_spec.rb
hamster-0.3.8 spec/hamster/immutable/memoize_spec.rb
hamster-0.3.7 spec/hamster/immutable/memoize_spec.rb