diff options
author | murphy <murphy@rubychan.de> | 2005-10-29 04:55:53 +0000 |
---|---|---|
committer | murphy <murphy@rubychan.de> | 2005-10-29 04:55:53 +0000 |
commit | 32440c8970eb351320ed3a9d5a986d275d3371c8 (patch) | |
tree | e86c71a856593d14ba03ce896f6ac773cddb6fec /test/ruby/class.in.rb | |
parent | fb64737038ca13b4047219c429560b97b98fe22b (diff) | |
download | coderay-32440c8970eb351320ed3a9d5a986d275d3371c8.tar.gz |
Added Test environment.
Diffstat (limited to 'test/ruby/class.in.rb')
-rw-r--r-- | test/ruby/class.in.rb | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/ruby/class.in.rb b/test/ruby/class.in.rb new file mode 100644 index 0000000..b8d0bca --- /dev/null +++ b/test/ruby/class.in.rb @@ -0,0 +1,83 @@ +$: << File.dirname(__FILE__) + '/..'
+require 'coderay'
+CodeRay::Encoders[:tokens]
+CodeRay::Encoders[:html]
+
+require 'test/unit'
+include Test::Unit
+
+class CodeRaySuite < TestCase
+
+ def self.dir &block
+ @dir ||= File.dirname(@file)
+ if block
+ Dir.chdir @dir, &block
+ end
+ @dir
+ end
+
+ def dir &block
+ self.class.dir &block
+ end
+
+ def extension
+ 'in.' + self.class::EXTENSION
+ end
+
+ def lang
+ self.class::LANG
+ end
+
+ def test_ALL
+ CodeRay::Scanners.load lang
+ tokenizer = CodeRay.tokens
+ highlighter = CodeRay.html
+
+ dir do
+ for input in Dir["*.#{extension}"]
+ name = File.basename(input, ".#{extension}")
+ output = name + '.out.tok'
+ code = File.read(input)
+
+ computed = tokenizer.encode code, lang
+
+ if File.exist? output
+ expected = File.read output
+ assert_equal(expected, computed)
+ else
+ File.open(output, 'w') do |f| f.write computed end
+ puts "New test: #{output}"
+ end
+
+ highlighted = highlighter.highlight_page code, lang
+ File.open(name + '.html', 'w') do |f| f.write highlighted end
+ end
+ end
+ end
+
+end
+
+require 'test/unit/testsuite'
+$suite = TestSuite.new
+
+def load_suite name
+ begin
+ require name + '/suite.rb'
+ rescue LoadError
+ $stderr.puts <<-ERR
+
+!! Folder #{File.split(__FILE__).first + '/' + name} not found
+
+ ERR
+ false
+ end
+end
+
+if subsuite = ARGV.first
+ load_suite(subsuite) or exit
+else
+ Dir['*/'].each { |suite| load_suite suite }
+end
+
+require 'test/unit/ui/console/testrunner'
+UI::Console::TestRunner.run $suite
|