From c3d6205a4ba92e25f1092ac9c1f4e72ee3c796ed Mon Sep 17 00:00:00 2001 From: Doug Barth Date: Thu, 9 Oct 2008 10:37:28 -0500 Subject: Fix cache counter semantics for MemoryCache, FileStoreCache, and (presumably) the DRbStore. Signed-off-by: Michael Koziarski --- activesupport/test/caching_test.rb | 96 +++++++++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 22 deletions(-) (limited to 'activesupport/test') diff --git a/activesupport/test/caching_test.rb b/activesupport/test/caching_test.rb index 9ea9389448..e2da2796eb 100644 --- a/activesupport/test/caching_test.rb +++ b/activesupport/test/caching_test.rb @@ -71,41 +71,21 @@ uses_mocha 'high-level cache store tests' do end end -class FileStoreTest < Test::Unit::TestCase - def setup - @cache = ActiveSupport::Cache.lookup_store(:file_store, Dir.pwd) - end - +# Tests the base functionality that should be identical across all cache stores. +module CacheStoreBehavior def test_should_read_and_write_strings @cache.write('foo', 'bar') assert_equal 'bar', @cache.read('foo') - ensure - File.delete("foo.cache") end def test_should_read_and_write_hash @cache.write('foo', {:a => "b"}) assert_equal({:a => "b"}, @cache.read('foo')) - ensure - File.delete("foo.cache") end def test_should_read_and_write_nil @cache.write('foo', nil) assert_equal nil, @cache.read('foo') - ensure - File.delete("foo.cache") - end -end - -class MemoryStoreTest < Test::Unit::TestCase - def setup - @cache = ActiveSupport::Cache.lookup_store(:memory_store) - end - - def test_should_read_and_write - @cache.write('foo', 'bar') - assert_equal 'bar', @cache.read('foo') end def test_fetch_without_cache_miss @@ -121,9 +101,81 @@ class MemoryStoreTest < Test::Unit::TestCase @cache.fetch('foo', :force => true) { 'bar' } end + def test_increment + @cache.write('foo', 1, :raw => true) + assert_equal 1, @cache.read('foo', :raw => true).to_i + assert_equal 2, @cache.increment('foo') + assert_equal 2, @cache.read('foo', :raw => true).to_i + assert_equal 3, @cache.increment('foo') + assert_equal 3, @cache.read('foo', :raw => true).to_i + end + + def test_decrement + @cache.write('foo', 3, :raw => true) + assert_equal 3, @cache.read('foo', :raw => true).to_i + assert_equal 2, @cache.decrement('foo') + assert_equal 2, @cache.read('foo', :raw => true).to_i + assert_equal 1, @cache.decrement('foo') + assert_equal 1, @cache.read('foo', :raw => true).to_i + end +end + +class FileStoreTest < Test::Unit::TestCase + def setup + @cache = ActiveSupport::Cache.lookup_store(:file_store, Dir.pwd) + end + + def teardown + File.delete("foo.cache") + end + + include CacheStoreBehavior +end + +class MemoryStoreTest < Test::Unit::TestCase + def setup + @cache = ActiveSupport::Cache.lookup_store(:memory_store) + end + + include CacheStoreBehavior + def test_store_objects_should_be_immutable @cache.write('foo', 'bar') assert_raise(ActiveSupport::FrozenObjectError) { @cache.read('foo').gsub!(/.*/, 'baz') } assert_equal 'bar', @cache.read('foo') end end + +class MemCacheStoreTest < Test::Unit::TestCase + def setup + @cache = ActiveSupport::Cache.lookup_store(:mem_cache_store) + @cache.clear + end + + include CacheStoreBehavior + + def test_store_objects_should_be_immutable + @cache.write('foo', 'bar') + @cache.read('foo').gsub!(/.*/, 'baz') + assert_equal 'bar', @cache.read('foo') + end + + # Disabling increment and decrement tests until issues can be addressed in the + # upstream codebase. + def test_increment; end + def test_decrement; end +end + +class CompressedMemCacheStore < Test::Unit::TestCase + def setup + @cache = ActiveSupport::Cache.lookup_store(:compressed_mem_cache_store) + @cache.clear + end + + include CacheStoreBehavior + + # Disabling increment and decrement tests until issues can be addressed in the + # upstream codebase. + def test_increment; end + def test_decrement; end +end -- cgit v1.2.3