module CartoCSSHelper::Validator
Public Instance Methods
check_dy(tags, zlevel, interactive = false, on_water = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 187 def check_dy(tags, zlevel, interactive = false, on_water = false) unless is_object_displaying_anything_as_node tags, zlevel, on_water # puts key+"="+value+" - not displayed as node on z#{zlevel}" return end unless is_object_displaying_name_as_node tags, 'a', zlevel, on_water # puts key+"="+value+" - label is missing on z#{zlevel} nodes" return end test_name = 'ÉÉÉÉÉÉ ÉÉÉÉÉÉ ÉÉÉÉÉÉ' until is_object_displaying_name_as_node tags, test_name, zlevel, on_water puts "#{tags} - name is missing for name '#{test_name}' on z#{zlevel}" if interactive puts 'press enter' gets else return end with_name = Scene.new({ key => value, 'name' => test_name }, zlevel, on_water, 'node', true) with_name.flush_cache puts 'calculating' end # puts key+"="+value+" - name is OK for name '#{name}'" end
check_missing_names(tags, zlevel, interactive = false, on_water = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 155 def check_missing_names(tags, zlevel, interactive = false, on_water = false) not_required = CartoCSSHelper::Configuration.get_style_specific_data.name_label_is_not_required return if not_required.include?(tags) ['node', 'closed_way', 'way'].each do |type| next if not_required.include?(tags.merge({ type: type })) unless is_object_displaying_anything_as_this_object_type tags, zlevel, on_water, type # puts key+"="+value+" - not displayed as node on z#{zlevel}" next end tags.delete('name') if tags['name'] != nil unless is_object_displaying_name_as_this_object_type tags, 'a', zlevel, on_water, type puts "#{tags} - label is missing on z#{zlevel} #{type}" next end end end
check_problems_with_closed_line(tags, zlevel, on_water = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 146 def check_problems_with_closed_line(tags, zlevel, on_water = false) way = Scene.new(tags, zlevel, on_water, 'way', true) closed_way = Scene.new(tags, zlevel, on_water, 'closed_way', true) empty = Scene.new({}, zlevel, on_water, 'node', true) if way.is_output_different(empty) puts tags unless closed_way.is_output_different(empty) end end
check_unwanted_names(tags, zlevel, interactive = false, on_water = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 172 def check_unwanted_names(tags, zlevel, interactive = false, on_water = false) ['node', 'closed_way', 'way'].each do |type| not_required = CartoCSSHelper::Configuration.get_style_specific_data.name_label_is_not_required next unless not_required.include?(tags) || not_required.include?(tags.merge({ type: type })) unless is_object_displaying_anything_as_this_object_type tags, zlevel, on_water, type # puts key+"="+value+" - not displayed as node on z#{zlevel}" next end tags.delete('name') if tags['name'] != nil if is_object_displaying_name_as_this_object_type tags, 'a', zlevel, on_water, type puts "#{tags} - label is unxpectedly displayed on z#{zlevel} #{type}" end end end
compare_expected_with_real_rendering(quick_and_more_prone_to_errors = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 57 def compare_expected_with_real_rendering(quick_and_more_prone_to_errors = false) list_of_documented = CartoCSSHelper::Configuration.get_style_specific_data.list_of_documented_tags info = Info.new list_of_rendered = info.get_render_state_of_tags(quick_and_more_prone_to_errors) puts 'ensure_that_tags_documented_and_rendered_have_the_same_state' ensure_that_tags_documented_and_rendered_have_the_same_state(list_of_documented, list_of_rendered) puts 'ensure_that_all_rendered_tags_are_documented' ensure_that_all_rendered_tags_are_documented(list_of_documented, list_of_rendered) puts 'ensure_that_all_documented_are_really_rendered' ensure_that_all_documented_are_really_rendered(list_of_documented, list_of_rendered) end
compare_expected_with_tag_data(list_of_expected, tag_info)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 113 def compare_expected_with_tag_data(list_of_expected, tag_info) list_of_expected.each do |expected| next unless expected.key == tag_info.key next unless expected.value == tag_info.value if expected.equal? tag_info puts 'expected' print "\t" expected.print puts 'real' print "\t" tag_info.print puts end return end end
ensure_that_all_documented_are_really_rendered(list_of_documented, list_of_rendered)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 90 def ensure_that_all_documented_are_really_rendered(list_of_documented, list_of_rendered) list_of_documented.each do |documented| if Info.get_expected_state(documented.key, documented.value) == :ignored next end next if is_tag_documented(list_of_rendered, documented.key, documented.value) puts 'documented' print "\t" documented.print puts 'real' puts "\tmissing" puts end end
is_object_displaying_anything_as_node(tags, zlevel, on_water)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 230 def is_object_displaying_anything_as_node(tags, zlevel, on_water) return is_object_displaying_anything_as_this_object_type(tags, zlevel, on_water, 'node') end
is_object_displaying_anything_as_this_object_type(tags, zlevel, on_water, type)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 224 def is_object_displaying_anything_as_this_object_type(tags, zlevel, on_water, type) object = Scene.new(tags, zlevel, on_water, type, true) empty = Scene.new({}, zlevel, on_water, type, true) return object.is_output_different(empty) end
is_object_displaying_name_as_node(tags, name, zlevel, on_water)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 220 def is_object_displaying_name_as_node(tags, name, zlevel, on_water) is_object_displaying_name_as_this_object_type(tags, name, zlevel, on_water, 'node') end
is_object_displaying_name_as_this_object_type(tags, name, zlevel, on_water, type)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 212 def is_object_displaying_name_as_this_object_type(tags, name, zlevel, on_water, type) name_tags = tags.merge({ 'name' => name }) with_name = Scene.new(name_tags, zlevel, on_water, type, true) nameless_tags = tags nameless = Scene.new(nameless_tags, zlevel, on_water, type, true) return with_name.is_output_different(nameless) end
is_tag_documented(list, key, value)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 105 def is_tag_documented(list, key, value) list.each do |tag_info| next unless key == tag_info.key return true if value == tag_info.value end return false end
run_closed_way_test(git_branch)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 50 def run_closed_way_test(git_branch) Git.checkout git_branch puts 'failed display of closed way, unlosed way works:' run_global_check(:check_problems_with_closed_line) puts end
run_dy_test(git_branch)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 43 def run_dy_test(git_branch) Git.checkout git_branch puts "bad dy values (tall names like 'É' are not displayed, short names like 'a' are):" run_global_check(:check_dy) puts end
run_expected_rendering_test(git_branch, quick_and_more_prone_to_errors = false)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 22 def run_expected_rendering_test(git_branch, quick_and_more_prone_to_errors = false) Git.checkout git_branch puts 'unexpectedly rendered/unrendered keys:' compare_expected_with_real_rendering(quick_and_more_prone_to_errors) puts end
run_global_check(function)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 130 def run_global_check(function) Heuristic.get_tags.each do |element| key = element[0] value = element[1] state = Info.get_expected_state(key, value) tags = { key => value } next if state == :ignore if state == :composite tags.merge!(Info.get_expected_composite(key, value)) end (Configuration.get_max_z..Configuration.get_max_z).each do |zlevel| # get_min_z should be used - but as renderer is extremely slow this hack was used TODO send(function, tags, zlevel) end end end
run_missing_name_test(git_branch)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 29 def run_missing_name_test(git_branch) Git.checkout git_branch puts 'Check whatever names are displayed:' run_global_check(:check_missing_names) puts end
run_tests(git_branch)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 13 def run_tests(git_branch) run_dy_test(git_branch) run_missing_name_test(git_branch) run_expected_rendering_test(git_branch, true) run_closed_way_test(git_branch) run_expected_rendering_test(git_branch) run_unwanted_name_test(git_branch) end
run_unwanted_name_test(git_branch)
click to toggle source
# File lib/cartocss_helper/validator.rb, line 36 def run_unwanted_name_test(git_branch) Git.checkout git_branch puts 'Check whatever names are displayed:' run_global_check(:check_unwanted_names) puts end