Sha256: 642aa17b221d60d39c2caf7f25b3781a9722da0e5d90e4af7b4f91beaaaee638

Contents?: true

Size: 1.39 KB

Versions: 52

Compression:

Stored size: 1.39 KB

Contents

describe :string_to_sym, :shared => true do
  it "returns the symbol corresponding to self" do
    "Koala".send(@method).should == :Koala
    'cat'.send(@method).should == :cat
    '@cat'.send(@method).should == :@cat
    'cat and dog'.send(@method).should == :"cat and dog"
    "abc=".send(@method).should == :abc=
  end

  it "special cases +(binary) and -(binary)" do
    "+(binary)".to_sym.should == :+
    "-(binary)".to_sym.should == :-
  end

  ruby_version_is ""..."1.9" do
    it "special cases !@ and ~@" do
      "!@".to_sym.should == :"!"
      "~@".to_sym.should == :~
    end

    it "special cases !(unary) and ~(unary)" do
      "!(unary)".to_sym.should == :"!"
      "~(unary)".to_sym.should == :~
    end

    it "special cases +(unary) and -(unary)" do
      "+(unary)".to_sym.should == :"+@"
      "-(unary)".to_sym.should == :"-@"
    end

    it "raises an ArgumentError when self can't be converted to symbol" do
      lambda { "".send(@method)           }.should raise_error(ArgumentError)
      lambda { "foo\x00bar".send(@method) }.should raise_error(ArgumentError)
    end
  end

  ruby_version_is "1.9" do
    it "does not special case certain operators" do
      [ ["!@", :"!@"],
        ["~@", :"~@"],
        ["!(unary)", :"!(unary)"],
        ["~(unary)", :"~(unary)"],
        ["+(unary)", :"+(unary)"],
        ["-(unary)", :"-(unary)"]
      ].should be_computed_by(:to_sym)
    end
  end
end

Version data entries

52 entries across 52 versions & 2 rubygems

Version Path
rhodes-7.6.0 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-7.5.1 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-7.4.1 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-7.1.17 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-6.2.0 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-6.0.11 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.18 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.17 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.15 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.0.22 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.2 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.0.7 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.0.3 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-5.5.0 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
tauplatform-1.0.3 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
tauplatform-1.0.2 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
tauplatform-1.0.1 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-3.5.1.12 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-3.3.5 spec/framework_spec/app/spec/core/string/shared/to_sym.rb
rhodes-3.4.2 spec/framework_spec/app/spec/core/string/shared/to_sym.rb