File: to_sym.rb

package info (click to toggle)
jruby 1.7.26-1%2Bdeb9u1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 84,572 kB
  • sloc: ruby: 669,910; java: 253,056; xml: 35,152; ansic: 9,187; yacc: 7,267; cpp: 5,244; sh: 1,036; makefile: 345; jsp: 48; tcl: 40
file content (48 lines) | stat: -rw-r--r-- 1,428 bytes parent folder | download
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
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