java coercion
authorMarc Peabody <marc@edgecase.com>
Sat, 2 Oct 2010 14:11:18 +0000 (10:11 -0400)
committerMarc Peabody <marc@edgecase.com>
Sat, 2 Oct 2010 14:11:18 +0000 (10:11 -0400)
koans/about_java_interop.rb
src/about_java_interop.rb

index 20a40c7..fb26693 100644 (file)
@@ -95,6 +95,21 @@ class AboutJavaInterop < EdgeCase::Koan
     assert_equal __, java_array.toString.is_a?(java.lang.String)
   end
 
+  def test_some_ruby_objects_can_be_coerced_to_java
+    assert_equal __, "ruby string".to_java.class
+    assert_equal __, 1.to_java.class
+    assert_equal __, 9.32.to_java.class
+    assert_equal __, false.to_java.class
+  end
+
+  def test_some_ruby_objects_can_NOT_be_coerced_to_java
+    [[], {}, Object.new].each do |ruby_object|
+      assert_raise(___) do
+        ruby_object.to_java_class
+      end
+    end
+  end
+
   def test_java_collections_are_enumerable
     java_array = java.util.ArrayList.new
     java_array << "one" << "two" << "three"
index 39a93b7..bb63a5f 100644 (file)
@@ -95,6 +95,21 @@ class AboutJavaInterop < EdgeCase::Koan
     assert_equal __(false), java_array.toString.is_a?(java.lang.String)
   end
 
+  def test_some_ruby_objects_can_be_coerced_to_java
+    assert_equal __(Java::JavaLang::String), "ruby string".to_java.class
+    assert_equal __(Java::JavaLang::Long), 1.to_java.class
+    assert_equal __(Java::JavaLang::Double), 9.32.to_java.class
+    assert_equal __(Java::JavaLang::Boolean), false.to_java.class
+  end
+
+  def test_some_ruby_objects_can_NOT_be_coerced_to_java
+    [[], {}, Object.new].each do |ruby_object|
+      assert_raise(___(NoMethodError)) do
+        ruby_object.to_java_class
+      end
+    end
+  end
+
   def test_java_collections_are_enumerable
     java_array = java.util.ArrayList.new
     java_array << "one" << "two" << "three"