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 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157
|
###
### $Rev$
### $Release: 0.7.2 $
### copyright(c) 2005-2010 kuwata-lab all rights reserved.
###
require File.dirname(__FILE__) + '/test.rb'
require 'kwalify/main'
module Kwalify
class Main
public :_parse_argv
end
end
class File
def self.move(filename, dirname)
File.rename(filename, "#{dirname}/#{filename}")
end
end
class MainTest < Test::Unit::TestCase
## define test methods
filename = __FILE__.sub(/\.rb$/, ".yaml")
load_yaml_testdata(filename, :lang=>'ruby')
## temporary directory
@@tmpdir = "tmp.dir"
Dir.mkdir(@@tmpdir) unless test(?d, @@tmpdir)
def _test
if @exception
classname = @exception =~ /Kwalify::(.*)/ ? $1 : @exception
@exception_class = Kwalify.const_get(classname)
end
case @method
when 'parseOptions'
_test_parse_options()
when 'execute'
_test_execute()
when 'validation'
raise "*** #{@name}: schema is not defined." unless @schema
raise "*** #{@name}: valid is not defined." unless @valid
raise "*** #{@name}: invalid is not defined." unless @invalid
_test_validation()
#when 'action'
# _test_action()
else
raise "*** #{@method}: invalid method name."
end
end
## validation test
def _test_validation()
return if $target && $target != @name
raise "*** schema is not defined." unless @schema
raise "*** valid is not defined." unless @valid
raise "*** invalid is not defined." unless @invalid
#
schema_filename = @name + ".schema"
valid_filename = @name + ".valid"
invalid_filename = @name + ".invalid"
#
begin
#
File.open(schema_filename, 'w') { |f| f.write(@schema) }
File.open(valid_filename, 'w') { |f| f.write(@valid) }
File.open(invalid_filename, 'w') { |f| f.write(@invalid) }
#
$stdout = StringWriter.new
main = Kwalify::Main.new('kwalify')
args = [ "-lf", schema_filename, valid_filename ]
main.execute(args)
output = $stdout; $stdout = STDOUT
assert_text_equal(@valid_out, output)
#
$stdout = StringWriter.new
main = Kwalify::Main.new('kwalify')
args = [ "-lf", schema_filename, invalid_filename ]
main.execute(args)
output = $stdout; $stdout = STDOUT
assert_text_equal(@invalid_out, output)
#
ensure
File.move(schema_filename, @@tmpdir)
File.move(valid_filename, @@tmpdir)
File.move(invalid_filename, @@tmpdir)
end
end
## execute test
def _test_execute()
return if $target && $target != @name
raise "*** #{@name}: args is required." unless @args
raise "*** #{@name}: expected is require." unless @expected
#
File.open("#{@name}.schema", 'w') { |f| f.write(@schema) } if @schema
File.open("#{@name}.document", 'w') { |f| f.write(@document) } if @document
#
begin
main = Kwalify::Main.new("kwalify")
if @exception_class
$stdout = StringWriter.new
ex = assert_raise(@exception_class) do
main.execute(@args)
end
assert_text_equal(@errormsg, ex.message) if @errormsg
$stdout = STDOUT
else
$stdout = StringWriter.new
main.execute(@args)
actual = $stdout; $stdout = STDOUT
assert_text_equal(@expected, actual)
end
ensure
File.move("#{@name}.schema", @@tmpdir) if @schema
File.move("#{@name}.document", @@tmpdir) if @document
end
end
## command option test
def _test_parse_options()
return if $target && $target != @name
main = Kwalify::Main.new("kwalify")
begin
filenames = main._parse_argv(@args)
s = main._inspect()
s << "filenames:\n"
filenames.each do |filename|
s << " - #{filename}\n"
end
actual = s
assert_text_equal(@expected, actual)
rescue => ex
#klass = @exception
if @exception_class && ex.class == @exception_class
# OK
assert_equal(@error_symbol, ex.error_symbol) if ex.respond_to?(:error_symbol)
else
# NG
raise ex
end
end
end
end
|