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 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
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 => {
FrozenError => nil,
},
SystemCallError => nil,
ThreadError => nil,
TypeError => nil,
ZeroDivisionError => nil,
},
SystemExit => nil,
SystemStackError => nil,
},
}
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
|