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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
###
### $Rev$
### $Release: 0.7.2 $
### copyright(c) 2005-2010 kuwata-lab all rights reserved.
###
require File.dirname(__FILE__) + '/test.rb'
class MetaValidatorTest < Test::Unit::TestCase
## define test methods
filename = __FILE__.sub(/\.rb$/, '.yaml')
load_yaml_documents(filename) do |ydoc|
name = ydoc['name']
ydoc.map do |key, val|
val = val['ruby'] if key =~ /(.*)\*$/
[key, val]
end.to_h
s = <<-END
def test_meta_#{name}
@name = #{ydoc['name'].inspect}
@desc = #{ydoc['desc'].inspect}
@schema = #{ydoc['schema'].inspect}
@meta_msg = #{ydoc['meta-msg'].inspect}
# @rule_msg = #{ydoc['rule-msg'].inspect}
@test_type = :meta
_test
end
END
module_eval s if ydoc['meta-msg']
s = <<-END
def test_rule_#{name}
@name = #{ydoc['name'].inspect}
@desc = #{ydoc['desc'].inspect}
@schema = #{ydoc['schema'].inspect}
# @meta_msg = #{ydoc['meta-msg'].inspect}
@rule_msg = #{ydoc['rule-msg'].inspect}
@test_type = :rule
_test
end
END
module_eval s if ydoc['rule-msg']
end
## execute test
def _test()
return if $target && $target != @name
#schema = YAML.load(@schema)
parser = Kwalify::YamlParser.new(@schema)
schema = parser.parse()
case @test_type
when :meta
meta_validator = Kwalify::MetaValidator.instance()
errors = meta_validator.validate(schema)
parser.set_errors_linenum(errors)
errors.sort!
expected = @meta_msg
when :rule
errors = []
begin
rule = Kwalify::Validator.new(schema)
rescue Kwalify::KwalifyError => error
errors << error
end
expected = @rule_msg
end
actual = ''
errors.each do |error|
raise error if error.is_a?(Kwalify::AssertionError)
actual << "%-20s: [%s] %s\n" % [error.error_symbol.inspect, error.path, error.message]
end
if $print
print actual
else
assert_text_equal(expected, actual)
end
end
end
|