Added LRU#maximum=/maximum
This allows one to change the maximum amount of keys stored in the XPath/CSS caches, for example: Oga::XPath::Parser::CACHE.maximum = 2056
This commit is contained in:
parent
12aa21fb50
commit
66fa9f62ef
|
@ -33,6 +33,24 @@ module Oga
|
||||||
@owner = Thread.current
|
@owner = Thread.current
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# @param [Fixnum] value
|
||||||
|
#
|
||||||
|
def maximum=(value)
|
||||||
|
synchronize do
|
||||||
|
@maximum = value
|
||||||
|
|
||||||
|
resize
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# @return [Fixnum]
|
||||||
|
#
|
||||||
|
def maximum
|
||||||
|
return synchronize { @maximum }
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Returns the value of the key.
|
# Returns the value of the key.
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,6 +1,34 @@
|
||||||
require 'spec_helper'
|
require 'spec_helper'
|
||||||
|
|
||||||
describe Oga::LRU do
|
describe Oga::LRU do
|
||||||
|
describe '#maximum=' do
|
||||||
|
it 'sets the maximum amount of keys' do
|
||||||
|
cache = described_class.new(10)
|
||||||
|
|
||||||
|
cache.maximum = 20
|
||||||
|
|
||||||
|
cache.maximum.should == 20
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'resizes the cache when needed' do
|
||||||
|
cache = described_class.new(2)
|
||||||
|
|
||||||
|
cache[:a] = 10
|
||||||
|
cache[:b] = 20
|
||||||
|
|
||||||
|
cache.maximum = 1
|
||||||
|
|
||||||
|
cache.size.should == 1
|
||||||
|
cache.keys.should == [:b]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#maximum' do
|
||||||
|
it 'returns the maximum amount of keys' do
|
||||||
|
described_class.new(5).maximum.should == 5
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
describe '#[]' do
|
describe '#[]' do
|
||||||
it 'returns nil for a non existing key' do
|
it 'returns nil for a non existing key' do
|
||||||
described_class.new[:a].should be_nil
|
described_class.new[:a].should be_nil
|
||||||
|
|
Loading…
Reference in New Issue