Added JRuby wrapper for fun scripting times.
[zxing.git] / jruby / test / zxing / decodable_test.rb
diff --git a/jruby/test/zxing/decodable_test.rb b/jruby/test/zxing/decodable_test.rb
new file mode 100755 (executable)
index 0000000..1770d54
--- /dev/null
@@ -0,0 +1,40 @@
+#!/usr/bin/env jruby --headless -rubygems
+
+require File.expand_path( File.dirname(__FILE__) + '/../test_helper')
+require 'zxing/decodable'
+
+class DecodableTest < Test::Unit::TestCase
+
+  class Object::File
+    include Decodable
+  end
+
+  class URL
+    include Decodable
+    def initialize(path)
+      @path = path
+    end
+    def path; @path end
+  end
+
+  context "A Decodable module" do
+    setup do
+      @file = File.open( File.expand_path( File.dirname(__FILE__) + '/../qrcode.png' ))
+      @uri = URL.new "http://2d-code.co.uk/images/bbc-logo-in-qr-code.gif"
+      @bad_uri = URL.new "http://google.com"
+    end
+
+    should "provide #decode to decode the return value of #path" do
+      assert_equal @file.decode, ZXing.decode(@file.path)
+      assert_equal @uri.decode, ZXing.decode(@uri.path)
+      assert_nil @bad_uri.decode
+    end
+
+    should "provide #decode! as well" do
+      assert_equal @file.decode!, ZXing.decode(@file.path)
+      assert_equal @uri.decode!, ZXing.decode(@uri.path)
+      assert_raise(NativeException) { @bad_uri.decode! }
+    end
+  end
+
+end