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 80 81 82 83 84 85 86 87 88 89
|
require File.expand_path('../spec_helper', __FILE__)
load_extension('symbol')
describe "C-API Symbol function" do
before :each do
@s = CApiSymbolSpecs.new
end
describe "rb_intern" do
it "converts a string to a symbol, uniquely" do
@s.rb_intern("test_symbol").should == :test_symbol
@s.rb_intern_c_compare("test_symbol", :test_symbol).should == true
end
end
describe "rb_id2name" do
it "converts a symbol to a C char array" do
@s.rb_id2name(:test_symbol).should == "test_symbol"
end
end
ruby_version_is "1.9" do
describe "rb_id2str" do
it "converts a symbol to a Ruby string" do
@s.rb_id2str(:test_symbol).should == "test_symbol"
end
it "creates a string with the same encoding as the symbol" do
str = "test_symbol".encode(Encoding::UTF_16LE)
@s.rb_id2str(str.to_sym).encoding.should == Encoding::UTF_16LE
end
end
end
describe "rb_is_const_id" do
it "returns true given a const-like symbol" do
@s.rb_is_const_id(:Foo).should == true
end
it "returns false given an ivar-like symbol" do
@s.rb_is_const_id(:@foo).should == false
end
it "returns false given a cvar-like symbol" do
@s.rb_is_const_id(:@@foo).should == false
end
it "returns false given an undecorated symbol" do
@s.rb_is_const_id(:foo).should == false
end
end
describe "rb_is_instance_id" do
it "returns false given a const-like symbol" do
@s.rb_is_instance_id(:Foo).should == false
end
it "returns true given an ivar-like symbol" do
@s.rb_is_instance_id(:@foo).should == true
end
it "returns false given a cvar-like symbol" do
@s.rb_is_instance_id(:@@foo).should == false
end
it "returns false given an undecorated symbol" do
@s.rb_is_instance_id(:foo).should == false
end
end
describe "rb_is_class_id" do
it "returns false given a const-like symbol" do
@s.rb_is_class_id(:Foo).should == false
end
it "returns false given an ivar-like symbol" do
@s.rb_is_class_id(:@foo).should == false
end
it "returns true given a cvar-like symbol" do
@s.rb_is_class_id(:@@foo).should == true
end
it "returns false given an undecorated symbol" do
@s.rb_is_class_id(:foo).should == false
end
end
end
|