Newer
Older
require "../../spec_helper"
describe "Codegen: responds_to?" do
it "codegens responds_to? true for simple type" do
run("1.responds_to?(:\"+\")").to_b.should be_true
end
it "codegens responds_to? false for simple type" do
run("1.responds_to?(:foo)").to_b.should be_false
end
it "codegens responds_to? with union gives true" do
run("(1 == 1 ? 1 : 'a').responds_to?(:\"+\")").to_b.should be_true
end
it "codegens responds_to? with union gives false" do
run("(1 == 1 ? 1 : 'a').responds_to?(:\"foo\")").to_b.should be_false
end
it "codegens responds_to? with nilable gives true" do
Ary Borenszweig
committed
run("struct Nil; def foo; end; end; (1 == 1 ? nil : Reference.new).responds_to?(:foo)").to_b.should be_true
it "codegens responds_to? with nilable gives false becuase other type 1" do
run("(1 == 1 ? nil : Reference.new).responds_to?(:foo)").to_b.should be_false
end
it "codegens responds_to? with nilable gives false becuase other type 2" do
run("class Reference; def foo; end; end; (1 == 2 ? nil : Reference.new).responds_to?(:foo)").to_b.should be_true
end
it "codegends responds_to? with generic class (1)" do
run(%(
class Foo(T)
def foo
end
end
Foo(Int32).new.responds_to?(:foo)
)).to_b.should be_true
end
it "codegends responds_to? with generic class (2)" do
run(%(
class Foo(T)
def foo
end
end
Foo(Int32).new.responds_to?(:bar)
)).to_b.should be_false
end