spec/mize/memoize_method_spec.rb in mize-0.2.1 vs spec/mize/memoize_method_spec.rb in mize-0.3.0

- old
+ new

@@ -1,14 +1,26 @@ require 'spec_helper' class FooBar - def self.reset - @@foo = nil - @@footsie = nil - @@bar = nil - @@baz = nil - Mize.cache_clear + class << self + def reset + @@foo = nil + @@footsie = nil + @@bar = nil + @@baz = nil + @@foo_nil_stored = nil + @@foo_nil_not_stored = nil + Mize.cache_clear + end + + def foo_nil_stored + @@foo_nil_stored + end + + def foo_nil_not_stored + @@foo_nil_not_stored + end end def foo(*a) @@foo ||= 0 @@foo += 1 @@ -26,10 +38,24 @@ @@bar ||= 0 @@bar += 1 end memoize function: :bar + def foo_nil_stored(*a) + @@foo_nil_stored ||= 0 + @@foo_nil_stored += 1 + nil + end + memoize method: :foo_nil_stored, store_nil: true + + def foo_nil_not_stored(*a) + @@foo_nil_not_stored ||= 0 + @@foo_nil_not_stored += 1 + nil + end + memoize method: :foo_nil_not_stored, store_nil: false + private def baz(*a) @@baz ||= 0 @@baz += 1 @@ -98,9 +124,30 @@ expect(fb1.foo(1)).to eq 1 fb1.mize_cache_clear_name :foo expect(fb1.__send__(:__mize_cache__)).not_to be_empty expect(fb1.__send__(:footsie, 1, 2)).to eq 1 expect(fb1.__send__(:foo, 1, 2)).to eq 2 + end + + it 'can store nil' do + expect(fb1.__send__(:__mize_cache__)).to be_empty + expect(FooBar.foo_nil_stored).to be_nil + expect(fb1.foo_nil_stored(1, 2)).to be_nil + expect(fb1.__send__(:__mize_cache__)).not_to be_empty + expect(FooBar.foo_nil_stored).to eq 1 + expect(fb1.foo_nil_stored(1, 2)).to be_nil + expect(FooBar.foo_nil_stored).to eq 1 + end + + it 'can skip storing nil' do + expect(fb1.__send__(:__mize_cache__)).to be_empty + expect(FooBar.foo_nil_not_stored).to be_nil + expect(fb1.foo_nil_not_stored(1, 2)).to be_nil + expect(fb1.__send__(:__mize_cache__)).to be_empty + expect(FooBar.foo_nil_not_stored).to eq 1 + expect(fb1.foo_nil_not_stored(1, 2)).to be_nil + expect(fb1.__send__(:__mize_cache__)).to be_empty + expect(FooBar.foo_nil_not_stored).to eq 2 end end context 'memoize function' do it 'can cache functions' do