1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
require File.dirname(__FILE__) + "/../spec_helper"
describe "Object extensions" do
shared_examples_for "Object that can include classes" do
before(:each) do
if Object.constants.include? 'Foo' or Object.constants.include? :Foo
Object.class_eval("remove_const 'Foo'")
end
if Object.constants.include? 'Properties' or Object.constants.include? :Properties
Object.class_eval("remove_const 'Properties'")
end
end
after(:each) do
if Object.constants.include? 'Foo' or Object.constants.include? :Foo
Object.class_eval("remove_const 'Foo'")
end
if Object.constants.include? 'Properties' or Object.constants.include? :Properties
Object.class_eval("remove_const 'Properties'")
end
end
it "should allow inclusion of Java class constants in class context" do
class Foo
java_import java.util.Properties
end
expect(Foo.constants).to have_strings_or_symbols 'Properties'
end
it "should allow inclusion of Java class constants in module context" do
module Foo
java_import java.util.Properties
end
expect(Foo.constants).to have_strings_or_symbols 'Properties'
end
it "should allow inclusion of Java class constants in instance context" do
class Foo
def initialize
java_import java.util.Properties
end
def props
Properties
end
end
expect(Foo.new.props).to eq(java.util.Properties)
end
end
describe "(without Object#class_eval defined)" do
it_should_behave_like "Object that can include classes"
end
describe "(with Object#class_eval defined)" do
before(:each) do
class Object
def metaclass
class << self
self
end
end
def class_eval(*args, &block)
metaclass.class_eval(*args, &block)
end
end
end
it_should_behave_like "Object that can include classes"
after(:each) do
class Object
undef metaclass
undef class_eval
end
end
end
end
|