1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
require "helper"
class TestCssCache < Nokogiri::TestCase
def setup
super
@css = "a1 > b2 > c3"
@parse_result = Nokogiri::CSS.parse(@css)
@to_xpath_result = @parse_result.map(&:to_xpath)
Nokogiri::CSS::Parser.class_eval do
class << @cache
alias :old_bracket :[]
attr_reader :count
def [](key)
@count ||= 0
@count += 1
old_bracket(key)
end
end
end
assert Nokogiri::CSS::Parser.cache_on?
end
def teardown
Nokogiri::CSS::Parser.clear_cache
Nokogiri::CSS::Parser.set_cache true
end
[ false, true ].each do |cache_setting|
define_method "test_css_cache_#{cache_setting ? "true" : "false"}" do
Nokogiri::CSS::Parser.set_cache cache_setting
Nokogiri::CSS.xpath_for(@css)
Nokogiri::CSS.xpath_for(@css)
Nokogiri::CSS::Parser.new.xpath_for(@css)
Nokogiri::CSS::Parser.new.xpath_for(@css)
if cache_setting
assert_equal(4, Nokogiri::CSS::Parser.class_eval { @cache.count })
else
assert_nil(Nokogiri::CSS::Parser.class_eval { @cache.count })
end
end
end
end
|