require 'test/unit' # # Load the environment unless defined? RADIANT_ROOT ENV["RAILS_ENV"] = "test" require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment" end require "#{RADIANT_ROOT}/test/test_helper" class Test::Unit::TestCase # Include a helper to make testing Radius tags easier test_helper :extension_tags # Add the fixture directory to the fixture path self.fixture_path << File.dirname(__FILE__) + "/fixtures" def assert_validation_data(validation_data, values_to_check, data_name) base_error_msg = 'Failure testing: "' + data_name + '"' values_to_check.each { |key, value| if key[-7..-1] == '_length' then assert_equal value, validation_data[key.gsub(/_length$/,'')].length, base_error_msg + ' with expected value for "' + key.gsub(/_length$/,'') + '.length":' else assert_equal value, validation_data[key], base_error_msg + ' with expected value for "' + key + '":' end } check_prevalidation_messages(validation_data, data_name) check_messages_sorting(validation_data, data_name) end def check_prevalidation_messages(validation_data, data_name) base_error_msg = 'Failure testing: "' + data_name + '"' # confirm that any prevalidation message-id's start with a 'W' validation_data['prevalidation_messages'].each { |pre_message| assert pre_message['mid'] =~ /^W/, base_error_msg + "\nPrevalidation Message did not start with a 'W'" } unless validation_data['prevalidation_messages'].nil? end def check_messages_sorting(validation_data, data_name) base_error_msg = 'Failure testing: "' + data_name + '"' validation_data['messages'].each_index { |message_index| if message_index > 0 && !validation_data['messages'][message_index]['line'].nil? && !validation_data['messages'][message_index]['col'].nil? then if validation_data['messages'][message_index - 1]['line'].to_i > validation_data['messages'][message_index]['line'].to_i then flunk base_error_msg + "\nmessages incorrectly sorted by line num:\n" + ' line number for message ' + (message_index - 1).to_s + ' (line: ' + validation_data['messages'][message_index - 1]['line'] + ")\n is greater than\n line number for message " + message_index.to_s + ' (line: ' + validation_data['messages'][message_index - 1]['line'] + ')' elsif validation_data['messages'][message_index - 1]['line'].to_i == validation_data['messages'][message_index]['line'].to_i then if validation_data['messages'][message_index - 1]['col'].to_i > validation_data['messages'][message_index]['col'].to_i then flunk base_error_msg + "\nmessages incorrectly sorted by col num:\n" + ' col number for message ' + (message_index - 1) + ' (col: ' + validation_data['messages'][message_index - 1]['col'] + ")\n is greater than\n col number for message " + message_index.to_s + ' (col: ' + validation_data['messages'][message_index - 1]['col'] + ')' elsif validation_data['messages'][message_index - 1]['col'].to_i == validation_data['messages'][message_index]['col'] if validation_data['messages'][message_index - 1]['type'] == 'error' && validation_data['messages'][message_index]['type'] == 'warning' then flunk base_error_msg + "\nmessages incorrectly sorted by type - " + "when two messages share the same line and col position,\n" + ' message ' + (message_index - 1).to_s + ' (type: ' + validation_data['messages'][message_index - 1]['type'] + ")\n should not come before\n message " + message_index.to_s + ' (type: ' + validation_data['messages'][message_index - 1]['type'] + ')' else assert true #count that this test passed end else assert true #count that this test passed end else assert true #count that this test passed end end } unless validation_data['messages'].nil? end end