ruby/spec/rubyspec/core/range/fixtures/classes.rb
eregon 95e8c48dd3 Add in-tree mspec and ruby/spec
* For easier modifications of ruby/spec by MRI developers.
* .gitignore: track changes under spec.
* spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec.
  These files can therefore be updated like any other file in MRI.
  Instructions are provided in spec/README.
  [Feature #13156] [ruby-core:79246]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-05-07 12:04:49 +00:00

65 lines
897 B
Ruby

module RangeSpecs
class TenfoldSucc
include Comparable
attr_reader :n
def initialize(n)
@n = n
end
def <=>(other)
@n <=> other.n
end
def succ
self.class.new(@n * 10)
end
end
# Custom Range classes Xs and Ys
class Custom
include Comparable
attr_reader :length
def initialize(n)
@length = n
end
def eql?(other)
inspect.eql? other.inspect
end
alias :== :eql?
def inspect
'custom'
end
def <=>(other)
@length <=> other.length
end
end
class Xs < Custom # represent a string of 'x's
def succ
Xs.new(@length + 1)
end
def inspect
'x' * @length
end
end
class Ys < Custom # represent a string of 'y's
def succ
Ys.new(@length + 1)
end
def inspect
'y' * @length
end
end
class MyRange < Range
end
end