root/lang/ruby/memoize/test/test_memoize.rb @ 27246

Revision 27246, 1.6 kB (checked in by drry, 4 years ago)
  • path を整理。
Line 
1require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
2require "memoize"
3
4class TestMemoize < Test::Unit::TestCase
5  class InstanceMethod
6    extend Memoize
7   
8    memoize
9    def refrector n; n; end
10   
11    memoize [0] => 100, 1 => 101
12    def refrector_with_default n; n; end
13  end
14 
15  class ClassMethod
16    class << self
17      extend Memoize
18     
19      memoize
20      def refrector n; n; end
21     
22      memoize [0] => 100, 1 => 101
23      def refrector_with_default n; n; end
24    end
25  end
26 
27  module ModuleFunction
28    extend Memoize
29   
30    memoize
31    def refrector n; n; end
32    module_function :refrector, :refrector_without_memoize
33   
34    memoize [0] => 100, 1 => 101
35    def refrector_with_default n; n; end
36    module_function :refrector_with_default, :refrector_with_default_without_memoize
37  end
38 
39 
40  def test_memoize_classes
41    [
42      InstanceMethod.new,
43      ClassMethod,
44      ModuleFunction,
45    ].each do |target|
46      assert_memoized target, :refrector
47      assert_memoized target, :refrector_with_default, 0 => 100, 1 => 101, 2 => 2
48    end
49  end
50 
51 
52  def assert_memoized target, method, defaults = {}
53    string1 = "string"
54    string2 = String.new(string1)
55   
56    refrect = target.__send__ method, string1
57    assert_equal true, refrect.equal?(string1), target
58   
59    refrect = target.__send__ method, string1
60    assert_equal true, refrect.equal?(string1), target
61   
62    defaults.each do |arg, default|
63      assert_equal default, target.refrector_with_default(arg), target
64    end
65  end
66end
Note: See TracBrowser for help on using the browser.