mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
62 lines
1.7 KiB
Ruby
62 lines
1.7 KiB
Ruby
require_relative '../../spec_helper'
|
|
|
|
describe "Exception" do
|
|
it "has the right class hierarchy" do
|
|
hierarchy = {
|
|
Exception => {
|
|
NoMemoryError => nil,
|
|
ScriptError => {
|
|
LoadError => nil,
|
|
NotImplementedError => nil,
|
|
SyntaxError => nil,
|
|
},
|
|
SecurityError => nil,
|
|
SignalException => {
|
|
Interrupt => nil,
|
|
},
|
|
StandardError => {
|
|
ArgumentError => {
|
|
UncaughtThrowError => nil,
|
|
},
|
|
EncodingError => nil,
|
|
FiberError => nil,
|
|
IOError => {
|
|
EOFError => nil,
|
|
},
|
|
IndexError => {
|
|
KeyError => nil,
|
|
StopIteration => {
|
|
ClosedQueueError => nil,
|
|
},
|
|
},
|
|
LocalJumpError => nil,
|
|
NameError => {
|
|
NoMethodError => nil,
|
|
},
|
|
RangeError => {
|
|
FloatDomainError => nil,
|
|
},
|
|
RegexpError => nil,
|
|
RuntimeError => nil,
|
|
SystemCallError => nil,
|
|
ThreadError => nil,
|
|
TypeError => nil,
|
|
ZeroDivisionError => nil,
|
|
},
|
|
SystemExit => nil,
|
|
SystemStackError => nil,
|
|
},
|
|
}
|
|
ruby_version_is "2.5" do
|
|
hierarchy[Exception][StandardError][RuntimeError] = {FrozenError => nil}
|
|
end
|
|
traverse = -> parent_class, parent_subclass_hash {
|
|
parent_subclass_hash.each do |child_class, child_subclass_hash|
|
|
child_class.class.should == Class
|
|
child_class.superclass.should == parent_class
|
|
traverse.call(child_class, child_subclass_hash) if child_subclass_hash
|
|
end
|
|
}
|
|
traverse.call(Object, hierarchy)
|
|
end
|
|
end
|