| 1 | require File.expand_path(File.join(File.dirname(__FILE__), "helper"))
|
|---|
| 2 | require "memoize"
|
|---|
| 3 |
|
|---|
| 4 | class 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
|
|---|
| 66 | end
|
|---|