summaryrefslogtreecommitdiff
path: root/test/unit/lines_of_code.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/unit/lines_of_code.rb')
-rw-r--r--test/unit/lines_of_code.rb63
1 files changed, 63 insertions, 0 deletions
diff --git a/test/unit/lines_of_code.rb b/test/unit/lines_of_code.rb
new file mode 100644
index 0000000..a76fed6
--- /dev/null
+++ b/test/unit/lines_of_code.rb
@@ -0,0 +1,63 @@
+require 'test/unit'
+require 'coderay'
+$VERBOSE = true
+
+class LinesOfCodeTest < Test::Unit::TestCase
+
+ def test_creation
+ assert CodeRay::Encoders::LinesOfCode < CodeRay::Encoders::Encoder
+ filter = nil
+ assert_nothing_raised do
+ filter = CodeRay.encoder :loc
+ end
+ assert_kind_of CodeRay::Encoders::LinesOfCode, filter
+ assert_nothing_raised do
+ filter = CodeRay.encoder :lines_of_code
+ end
+ assert_kind_of CodeRay::Encoders::LinesOfCode, filter
+ end
+
+ def test_lines_of_code
+ tokens = CodeRay.scan <<-RUBY, :ruby
+#!/usr/bin/env ruby
+
+# a minimal Ruby program
+puts "Hello world!"
+ RUBY
+ assert_equal 1, CodeRay::Encoders::LinesOfCode.new.encode_tokens(tokens)
+ assert_equal 1, tokens.lines_of_code
+ assert_equal 1, tokens.loc
+ end
+
+ class ScannerMockup
+ KINDS_NOT_LOC = [:space]
+ end
+
+ def test_filtering_block_tokens
+ tokens = CodeRay::Tokens.new
+ tokens.concat ["Hello\n", :world]
+ tokens.concat ["\n", :space]
+ tokens.concat ["Hello\n", :comment]
+
+ if defined? JRUBY_VERSION
+ $stderr.puts 'Skipped test because of JRUBY bug.'
+ else
+ stderr, fake_stderr = $stderr, Object.new
+ begin
+ $err = ''
+ def fake_stderr.write x
+ $err << x
+ end
+ $stderr = fake_stderr
+ assert_equal 1, tokens.lines_of_code
+ assert_equal "Tokens have no associated scanner, counting all nonempty lines.\n", $err
+ ensure
+ $stderr = stderr
+ end
+ end
+
+ tokens.scanner = ScannerMockup.new
+ assert_equal 2, tokens.lines_of_code
+ end
+
+end \ No newline at end of file