aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/memoizable_test.rb
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2008-11-22 15:19:19 -0800
committerJeremy Kemper <jeremy@bitsweat.net>2008-11-22 19:19:12 -0800
commitf927a60d0fa33f3e0fc3c0c891ae7657a227707f (patch)
tree3a9541a4d16e0ba6a8d1afeee03f26e57a09044e /activesupport/test/memoizable_test.rb
parent708f4c3ae6a41a46ab36a05ea4e126392b81511b (diff)
downloadrails-f927a60d0fa33f3e0fc3c0c891ae7657a227707f.tar.gz
rails-f927a60d0fa33f3e0fc3c0c891ae7657a227707f.tar.bz2
rails-f927a60d0fa33f3e0fc3c0c891ae7657a227707f.zip
Require mocha >= 0.9.0 for AS tests
Diffstat (limited to 'activesupport/test/memoizable_test.rb')
-rw-r--r--activesupport/test/memoizable_test.rb336
1 files changed, 167 insertions, 169 deletions
diff --git a/activesupport/test/memoizable_test.rb b/activesupport/test/memoizable_test.rb
index a78ebd9425..33f1e7fe61 100644
--- a/activesupport/test/memoizable_test.rb
+++ b/activesupport/test/memoizable_test.rb
@@ -1,218 +1,216 @@
require 'abstract_unit'
-uses_mocha 'Memoizable' do
- class MemoizableTest < Test::Unit::TestCase
- class Person
- extend ActiveSupport::Memoizable
-
- attr_reader :name_calls, :age_calls
- def initialize
- @name_calls = 0
- @age_calls = 0
- end
+class MemoizableTest < Test::Unit::TestCase
+ class Person
+ extend ActiveSupport::Memoizable
- def name
- @name_calls += 1
- "Josh"
- end
+ attr_reader :name_calls, :age_calls
+ def initialize
+ @name_calls = 0
+ @age_calls = 0
+ end
- def name?
- true
- end
- memoize :name?
+ def name
+ @name_calls += 1
+ "Josh"
+ end
- def update(name)
- "Joshua"
- end
- memoize :update
+ def name?
+ true
+ end
+ memoize :name?
- def age
- @age_calls += 1
- nil
- end
+ def update(name)
+ "Joshua"
+ end
+ memoize :update
- memoize :name, :age
+ def age
+ @age_calls += 1
+ nil
end
- class Company
- attr_reader :name_calls
- def initialize
- @name_calls = 0
- end
+ memoize :name, :age
+ end
- def name
- @name_calls += 1
- "37signals"
- end
+ class Company
+ attr_reader :name_calls
+ def initialize
+ @name_calls = 0
end
- module Rates
- extend ActiveSupport::Memoizable
-
- attr_reader :sales_tax_calls
- def sales_tax(price)
- @sales_tax_calls ||= 0
- @sales_tax_calls += 1
- price * 0.1025
- end
- memoize :sales_tax
+ def name
+ @name_calls += 1
+ "37signals"
end
+ end
- class Calculator
- extend ActiveSupport::Memoizable
- include Rates
+ module Rates
+ extend ActiveSupport::Memoizable
- attr_reader :fib_calls
- def initialize
- @fib_calls = 0
- end
+ attr_reader :sales_tax_calls
+ def sales_tax(price)
+ @sales_tax_calls ||= 0
+ @sales_tax_calls += 1
+ price * 0.1025
+ end
+ memoize :sales_tax
+ end
- def fib(n)
- @fib_calls += 1
+ class Calculator
+ extend ActiveSupport::Memoizable
+ include Rates
- if n == 0 || n == 1
- n
- else
- fib(n - 1) + fib(n - 2)
- end
- end
- memoize :fib
+ attr_reader :fib_calls
+ def initialize
+ @fib_calls = 0
+ end
+
+ def fib(n)
+ @fib_calls += 1
- def counter
- @count ||= 0
- @count += 1
+ if n == 0 || n == 1
+ n
+ else
+ fib(n - 1) + fib(n - 2)
end
- memoize :counter
end
+ memoize :fib
- def setup
- @person = Person.new
- @calculator = Calculator.new
+ def counter
+ @count ||= 0
+ @count += 1
end
+ memoize :counter
+ end
- def test_memoization
- assert_equal "Josh", @person.name
- assert_equal 1, @person.name_calls
+ def setup
+ @person = Person.new
+ @calculator = Calculator.new
+ end
- 3.times { assert_equal "Josh", @person.name }
- assert_equal 1, @person.name_calls
- end
+ def test_memoization
+ assert_equal "Josh", @person.name
+ assert_equal 1, @person.name_calls
- def test_memoization_with_punctuation
- assert_equal true, @person.name?
+ 3.times { assert_equal "Josh", @person.name }
+ assert_equal 1, @person.name_calls
+ end
- assert_nothing_raised(NameError) do
- @person.memoize_all
- @person.unmemoize_all
- end
+ def test_memoization_with_punctuation
+ assert_equal true, @person.name?
+
+ assert_nothing_raised(NameError) do
+ @person.memoize_all
+ @person.unmemoize_all
end
+ end
- def test_memoization_with_nil_value
- assert_equal nil, @person.age
- assert_equal 1, @person.age_calls
+ def test_memoization_with_nil_value
+ assert_equal nil, @person.age
+ assert_equal 1, @person.age_calls
- 3.times { assert_equal nil, @person.age }
- assert_equal 1, @person.age_calls
- end
+ 3.times { assert_equal nil, @person.age }
+ assert_equal 1, @person.age_calls
+ end
- def test_memorized_results_are_immutable
- assert_equal "Josh", @person.name
- assert_raise(ActiveSupport::FrozenObjectError) { @person.name.gsub!("Josh", "Gosh") }
- end
+ def test_memorized_results_are_immutable
+ assert_equal "Josh", @person.name
+ assert_raise(ActiveSupport::FrozenObjectError) { @person.name.gsub!("Josh", "Gosh") }
+ end
- def test_reloadable
- counter = @calculator.counter
- assert_equal 1, @calculator.counter
- assert_equal 2, @calculator.counter(:reload)
- assert_equal 2, @calculator.counter
- assert_equal 3, @calculator.counter(true)
- assert_equal 3, @calculator.counter
- end
+ def test_reloadable
+ counter = @calculator.counter
+ assert_equal 1, @calculator.counter
+ assert_equal 2, @calculator.counter(:reload)
+ assert_equal 2, @calculator.counter
+ assert_equal 3, @calculator.counter(true)
+ assert_equal 3, @calculator.counter
+ end
- def test_unmemoize_all
- assert_equal 1, @calculator.counter
+ def test_unmemoize_all
+ assert_equal 1, @calculator.counter
- assert @calculator.instance_variable_get(:@_memoized_counter).any?
- @calculator.unmemoize_all
- assert @calculator.instance_variable_get(:@_memoized_counter).empty?
+ assert @calculator.instance_variable_get(:@_memoized_counter).any?
+ @calculator.unmemoize_all
+ assert @calculator.instance_variable_get(:@_memoized_counter).empty?
- assert_equal 2, @calculator.counter
- end
+ assert_equal 2, @calculator.counter
+ end
- def test_memoize_all
- @calculator.memoize_all
- assert @calculator.instance_variable_defined?(:@_memoized_counter)
- end
+ def test_memoize_all
+ @calculator.memoize_all
+ assert @calculator.instance_variable_defined?(:@_memoized_counter)
+ end
- def test_memoization_cache_is_different_for_each_instance
- assert_equal 1, @calculator.counter
- assert_equal 2, @calculator.counter(:reload)
- assert_equal 1, Calculator.new.counter
- end
+ def test_memoization_cache_is_different_for_each_instance
+ assert_equal 1, @calculator.counter
+ assert_equal 2, @calculator.counter(:reload)
+ assert_equal 1, Calculator.new.counter
+ end
- def test_memoized_is_not_affected_by_freeze
- @person.freeze
- assert_equal "Josh", @person.name
- assert_equal "Joshua", @person.update("Joshua")
- end
+ def test_memoized_is_not_affected_by_freeze
+ @person.freeze
+ assert_equal "Josh", @person.name
+ assert_equal "Joshua", @person.update("Joshua")
+ end
- def test_memoization_with_args
- assert_equal 55, @calculator.fib(10)
- assert_equal 11, @calculator.fib_calls
- end
+ def test_memoization_with_args
+ assert_equal 55, @calculator.fib(10)
+ assert_equal 11, @calculator.fib_calls
+ end
- def test_reloadable_with_args
- assert_equal 55, @calculator.fib(10)
- assert_equal 11, @calculator.fib_calls
- assert_equal 55, @calculator.fib(10, :reload)
- assert_equal 12, @calculator.fib_calls
- assert_equal 55, @calculator.fib(10, true)
- assert_equal 13, @calculator.fib_calls
- end
+ def test_reloadable_with_args
+ assert_equal 55, @calculator.fib(10)
+ assert_equal 11, @calculator.fib_calls
+ assert_equal 55, @calculator.fib(10, :reload)
+ assert_equal 12, @calculator.fib_calls
+ assert_equal 55, @calculator.fib(10, true)
+ assert_equal 13, @calculator.fib_calls
+ end
- def test_object_memoization
- [Company.new, Company.new, Company.new].each do |company|
- company.extend ActiveSupport::Memoizable
- company.memoize :name
+ def test_object_memoization
+ [Company.new, Company.new, Company.new].each do |company|
+ company.extend ActiveSupport::Memoizable
+ company.memoize :name
- assert_equal "37signals", company.name
- assert_equal 1, company.name_calls
- assert_equal "37signals", company.name
- assert_equal 1, company.name_calls
- end
+ assert_equal "37signals", company.name
+ assert_equal 1, company.name_calls
+ assert_equal "37signals", company.name
+ assert_equal 1, company.name_calls
end
+ end
- def test_memoized_module_methods
- assert_equal 1.025, @calculator.sales_tax(10)
- assert_equal 1, @calculator.sales_tax_calls
- assert_equal 1.025, @calculator.sales_tax(10)
- assert_equal 1, @calculator.sales_tax_calls
- assert_equal 2.5625, @calculator.sales_tax(25)
- assert_equal 2, @calculator.sales_tax_calls
- end
+ def test_memoized_module_methods
+ assert_equal 1.025, @calculator.sales_tax(10)
+ assert_equal 1, @calculator.sales_tax_calls
+ assert_equal 1.025, @calculator.sales_tax(10)
+ assert_equal 1, @calculator.sales_tax_calls
+ assert_equal 2.5625, @calculator.sales_tax(25)
+ assert_equal 2, @calculator.sales_tax_calls
+ end
- def test_object_memoized_module_methods
- company = Company.new
- company.extend(Rates)
+ def test_object_memoized_module_methods
+ company = Company.new
+ company.extend(Rates)
- assert_equal 1.025, company.sales_tax(10)
- assert_equal 1, company.sales_tax_calls
- assert_equal 1.025, company.sales_tax(10)
- assert_equal 1, company.sales_tax_calls
- assert_equal 2.5625, company.sales_tax(25)
- assert_equal 2, company.sales_tax_calls
- end
+ assert_equal 1.025, company.sales_tax(10)
+ assert_equal 1, company.sales_tax_calls
+ assert_equal 1.025, company.sales_tax(10)
+ assert_equal 1, company.sales_tax_calls
+ assert_equal 2.5625, company.sales_tax(25)
+ assert_equal 2, company.sales_tax_calls
+ end
- def test_double_memoization
- assert_raise(RuntimeError) { Person.memoize :name }
- person = Person.new
- person.extend ActiveSupport::Memoizable
- assert_raise(RuntimeError) { person.memoize :name }
+ def test_double_memoization
+ assert_raise(RuntimeError) { Person.memoize :name }
+ person = Person.new
+ person.extend ActiveSupport::Memoizable
+ assert_raise(RuntimeError) { person.memoize :name }
- company = Company.new
- company.extend ActiveSupport::Memoizable
- company.memoize :name
- assert_raise(RuntimeError) { company.memoize :name }
- end
+ company = Company.new
+ company.extend ActiveSupport::Memoizable
+ company.memoize :name
+ assert_raise(RuntimeError) { company.memoize :name }
end
end