Sha256: 960a45bf8865565bac341d3ae09e4fc2bfe33ce791e30f312f541e7648e4922c

Contents?: true

Size: 1.07 KB

Versions: 17

Compression:

Stored size: 1.07 KB

Contents

class Nanoc::Int::MemoizationTest < Nanoc::TestCase
  class Sample1
    extend Nanoc::Int::Memoization

    def initialize(value)
      @value = value
    end

    def run(n)
      @value * 10 + n
    end
    memoize :run
  end

  class Sample2
    extend Nanoc::Int::Memoization

    def initialize(value)
      @value = value
    end

    def run(n)
      @value * 100 + n
    end
    memoize :run
  end

  class Upcaser
    extend Nanoc::Int::Memoization

    def run(value)
      value.upcase
    end
    memoize :run
  end

  def test_normal
    sample1a = Sample1.new(10)
    sample1b = Sample1.new(15)
    sample2a = Sample2.new(20)
    sample2b = Sample2.new(25)

    3.times do
      assert_equal 10 * 10 + 5,  sample1a.run(5)
      assert_equal 10 * 15 + 7,  sample1b.run(7)
      assert_equal 100 * 20 + 5, sample2a.run(5)
      assert_equal 100 * 25 + 7, sample2b.run(7)
    end
  end

  def test_weak_inspect
    upcaser = Upcaser.new
    10_000.times do |i|
      upcaser.run("hello world #{i}")
    end

    GC.start
    GC.start

    # Should not raise
    upcaser.inspect
  end
end

Version data entries

17 entries across 17 versions & 1 rubygems

Version Path
nanoc-4.4.5 test/base/test_memoization.rb
nanoc-4.4.4 test/base/test_memoization.rb
nanoc-4.4.3 test/base/test_memoization.rb
nanoc-4.4.2 test/base/test_memoization.rb
nanoc-4.4.1 test/base/test_memoization.rb
nanoc-4.4.0 test/base/test_memoization.rb
nanoc-4.3.8 test/base/test_memoization.rb
nanoc-4.3.7 test/base/test_memoization.rb
nanoc-4.3.6 test/base/test_memoization.rb
nanoc-4.3.5 test/base/test_memoization.rb
nanoc-4.3.4 test/base/test_memoization.rb
nanoc-4.3.3 test/base/test_memoization.rb
nanoc-4.3.2 test/base/test_memoization.rb
nanoc-4.3.1 test/base/test_memoization.rb
nanoc-4.3.0 test/base/test_memoization.rb
nanoc-4.2.4 test/base/test_memoization.rb
nanoc-4.2.3 test/base/test_memoization.rb