Sha256: e2759d430c54bf024221489dd2dd6f3e17313bba4df8dc56d468218c6fd0582e

Contents?: true

Size: 2 KB

Versions: 3

Compression:

Stored size: 2 KB

Contents

require 'lru_redux'
require 'minitest/autorun'
require 'minitest/pride'

class CacheTest < MiniTest::Unit::TestCase
  def setup
    @c = LruRedux::Cache.new(3)
  end

  def teardown
    assert_equal true, @c.valid?
  end

  def test_drops_old
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3
    @c[:d] = 4

    assert_equal [[:d,4],[:c,3],[:b,2]], @c.to_a
    assert_nil @c[:a]
  end

  def test_fetch
    @c[:a] = nil
    @c[:b] = 2
    assert_equal @c.fetch(:a){1}, nil
    assert_equal @c.fetch(:c){3}, 3

    assert_equal [[:a,nil],[:b,2]], @c.to_a
  end

  def test_getset
   assert_equal @c.getset(:a){1}, 1
   @c.getset(:b){2}
   assert_equal @c.getset(:a){11}, 1
   @c.getset(:c){3}
   assert_equal @c.getset(:d){4}, 4

    assert_equal [[:d,4],[:c,3],[:a,1]], @c.to_a
  end

  def test_pushes_lru_to_back
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3

    @c[:a]
    @c[:d] = 4

    assert_equal [[:d,4],[:a,1],[:c,3]], @c.to_a
    assert_nil @c[:b]
  end


  def test_delete
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3
    @c.delete(:a)

    assert_equal [[:c,3],[:b,2]], @c.to_a
    assert_nil @c[:a]

    # Regression test for a bug in the legacy delete method
    @c.delete(:b)
    @c[:d] = 4
    @c[:e] = 5
    @c[:f] = 6

    assert_equal [[:f,6],[:e,5],[:d,4]], @c.to_a
    assert_nil @c[:b]
  end

  def test_update
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3
    @c[:a] = 99
    assert_equal [[:a,99],[:c,3],[:b,2]], @c.to_a
  end

  def test_clear
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3

    @c.clear
    assert_equal [], @c.to_a
  end

  def test_grow
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3
    @c.max_size = 4
    @c[:d] = 4
    assert_equal [[:d,4],[:c,3],[:b,2],[:a,1]], @c.to_a
  end

  def test_shrink
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3
    @c.max_size = 1
    assert_equal [[:c,3]], @c.to_a
  end

  def test_each
    @c.max_size = 2
    @c[:a] = 1
    @c[:b] = 2
    @c[:c] = 3

    pairs = []
    @c.each do |pair|
      pairs << pair
    end

    assert_equal [[:c,3],[:b, 2]], pairs

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
lru_redux-0.8.4 test/cache_test.rb
lru_redux-0.8.3 test/cache_test.rb
lru_redux-0.8.2 test/cache_test.rb