builtins/kernel_string.rb

tests/_examples/builtins/kernel_string.rb in the metorex repository.

puts String("already").inspect
puts String(nil).inspect
puts String(1.12).inspect
puts String(true).inspect
puts String(false).inspect
puts String(42).inspect
puts String(Object).inspect
puts String :symbol

class Tag
  def to_s
    "tag"
  end
end

puts String(Tag.new)

class Silent
  undef_method :to_s
end

begin
  String(Silent.new)
rescue TypeError => e
  puts e.message
end

class Wrong
  def to_s
    123
  end
end

begin
  String(Wrong.new)
rescue TypeError => e
  puts e.message
end

original = "same"
puts String(original).equal?(original)

class Name < String
end

label = Name.new("metorex")
puts label.to_s
puts label.length
puts label.upcase
puts label == "metorex"
puts String(label).equal?(label)
puts Kernel.String(7)
puts Kernel.private_instance_methods.include?(:String)

Output:

"already"
""
"1.12"
"true"
"false"
"42"
"Object"
symbol
tag
can't convert Silent into String
can't convert Wrong to String (Wrong#to_s gives Integer)
true
metorex
7
METOREX
true
true
7
true