Move memoize decorator to lib/decorate/memoize.
[decorate.git] / test.rb
blob018a755c1f2b9a11871c8d6423ba54e31fd53e5e
1 $:.unshift "lib"
3 require "decorate/private_method"
4 require "decorate/memoize"
6 class Foo
8   def foo
9     puts "foo"
10     bar
11   end
13   private_method
14   def bar
15     puts "bar"
16   end
18 end
20 class M1
21   extend Decorate::Memoize
23   memoize
24   def m1(a, b)
25     puts "#{self}.m1(#{a}, #{b})"
26     case [a,b]
27     when [1,2]; 1
28     when [2,3]; 2
29     when [4,5]; 3
30     else -1
31     end
32   end
34   puts "defining class method m1"
36   # doesn't work (yet)
37   # Must hook into Object#singleton_method_added to make it work!
38   memoize
39   def self.m1(a, b)
40     puts "#{self}.m1(#{a}, #{b})"
41     case [a,b]
42     when [1,2]; 1
43     when [2,3]; 2
44     when [4,5]; 3
45     else -1
46     end
47   end
49 end
51 extend Decorate::Memoize
53 memoize
54 def mx(a, b)
55   puts "#{self}.m1(#{a}, #{b})"
56   case [a,b]
57   when [1,2]; 1
58   when [2,3]; 2
59   when [4,5]; 3
60   else -1
61   end
62 end
64 Decorate::Memoize.memoize
65 def my(a, b)
66   puts "#{self}.m1(#{a}, #{b})"
67   case [a,b]
68   when [1,2]; 1
69   when [2,3]; 2
70   when [4,5]; 3
71   else -1
72   end
73 end
75 private_method
76 def private_toplevel_method
77   puts "private_toplevel_method called"
78 end