use version numbers that fit in ushorts
[mono.git] / mcs / class / Mono.Cecil / CodeGen / cecil-gen-tests.rb
1 #!/usr/bin/env ruby
2
3 require 'erb'
4
5 class Language
6
7         attr_reader(:name)
8         attr_reader(:compiler)
9         attr_reader(:ext)
10         attr_reader(:command)
11
12         def initialize(name, compiler, ext, command)
13                 @name = name
14                 @compiler = compiler
15                 @ext = ext
16                 @command = command
17         end
18 end
19
20 class TestCase
21
22         attr_reader(:lang)
23         attr_reader(:file)
24
25         def initialize(lang, file)
26                 @lang = lang
27                 @file = file
28         end
29
30         def method()
31                 meth = @file.gsub(/[^a-zA-Z1-9]/, "_")
32                 return meth[1..meth.length] if (meth[0].chr == "_")
33                 return meth
34         end
35 end
36
37 $languages = [
38         Language.new("cil", "ilasm", ".il", "{0} /exe /output:{2} {1}"),
39         Language.new("csharp", "mcs", ".cs", "{0} /t:exe /o:{2} {1}")
40 ]
41
42 $tests = [
43 ]
44
45 def analyze(dir)
46         $languages.each { |l|
47                 pattern = File.join(dir, "**", "*" + l.ext)
48                 Dir[pattern].each { |file|
49                         $tests.push(TestCase.new(l, File.expand_path(file)))
50                 }
51         }
52 end
53
54 ARGV.each { |dir|
55         analyze(dir)
56 }
57
58 if $tests.length > 0
59         erb = ERB.new(IO.read("./templates/Tests.cs"))
60         print(erb.result)
61 end