mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
353 lines
5.8 KiB
Ruby
353 lines
5.8 KiB
Ruby
|
# These modules and classes are fixtures used by the Ruby reflection specs.
|
||
|
# These include specs for methods:
|
||
|
#
|
||
|
# Module:
|
||
|
# instance_methods
|
||
|
# public_instance_methods
|
||
|
# protected_instance_methods
|
||
|
# private_instance_methods
|
||
|
#
|
||
|
# Kernel:
|
||
|
# methods
|
||
|
# public_methods
|
||
|
# protected_methods
|
||
|
# private_methods
|
||
|
# singleton_methods
|
||
|
#
|
||
|
# The following naming scheme is used to keep the method names short and still
|
||
|
# communicate the relevant facts about the methods:
|
||
|
#
|
||
|
# X[s]_VIS
|
||
|
#
|
||
|
# where
|
||
|
#
|
||
|
# X is the name of the module or class in lower case
|
||
|
# s is the literal character 's' for singleton methods
|
||
|
# VIS is the first three letters of the corresponding visibility
|
||
|
# pub(lic), pro(tected), pri(vate)
|
||
|
#
|
||
|
# For example:
|
||
|
#
|
||
|
# l_pub is a public method on module L
|
||
|
# ls_pri is a private singleton method on module L
|
||
|
|
||
|
module ReflectSpecs
|
||
|
# An object with no singleton methods.
|
||
|
def self.o
|
||
|
mock("Object with no singleton methods")
|
||
|
end
|
||
|
|
||
|
# An object with singleton methods.
|
||
|
def self.os
|
||
|
obj = mock("Object with singleton methods")
|
||
|
class << obj
|
||
|
def os_pub; :os_pub; end
|
||
|
|
||
|
def os_pro; :os_pro; end
|
||
|
protected :os_pro
|
||
|
|
||
|
def os_pri; :os_pri; end
|
||
|
private :os_pri
|
||
|
end
|
||
|
obj
|
||
|
end
|
||
|
|
||
|
# An object extended with a module.
|
||
|
def self.oe
|
||
|
obj = mock("Object extended")
|
||
|
obj.extend M
|
||
|
obj
|
||
|
end
|
||
|
|
||
|
# An object with duplicate methods extended with a module.
|
||
|
def self.oed
|
||
|
obj = mock("Object extended")
|
||
|
obj.extend M
|
||
|
|
||
|
class << obj
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
obj
|
||
|
end
|
||
|
|
||
|
# An object extended with two modules.
|
||
|
def self.oee
|
||
|
obj = mock("Object extended twice")
|
||
|
obj.extend M
|
||
|
obj.extend N
|
||
|
obj
|
||
|
end
|
||
|
|
||
|
# An object extended with a module including a module.
|
||
|
def self.oei
|
||
|
obj = mock("Object extended, included")
|
||
|
obj.extend N
|
||
|
obj
|
||
|
end
|
||
|
|
||
|
# A simple module.
|
||
|
module L
|
||
|
class << self
|
||
|
def ls_pub; :ls_pub; end
|
||
|
|
||
|
def ls_pro; :ls_pro; end
|
||
|
protected :ls_pro
|
||
|
|
||
|
def ls_pri; :ls_pri; end
|
||
|
private :ls_pri
|
||
|
end
|
||
|
|
||
|
def l_pub; :l_pub; end
|
||
|
|
||
|
def l_pro; :l_pro; end
|
||
|
protected :l_pro
|
||
|
|
||
|
def l_pri; :l_pri; end
|
||
|
private :l_pri
|
||
|
end
|
||
|
|
||
|
# A module with no singleton methods.
|
||
|
module K
|
||
|
end
|
||
|
|
||
|
# A simple module.
|
||
|
module M
|
||
|
class << self
|
||
|
def ms_pub; :ms_pub; end
|
||
|
|
||
|
def ms_pro; :ms_pro; end
|
||
|
protected :ms_pro
|
||
|
|
||
|
def ms_pri; :ms_pri; end
|
||
|
private :ms_pri
|
||
|
end
|
||
|
|
||
|
def m_pub; :m_pub; end
|
||
|
|
||
|
def m_pro; :m_pro; end
|
||
|
protected :m_pro
|
||
|
|
||
|
def m_pri; :m_pri; end
|
||
|
private :m_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
# A module including a module
|
||
|
module N
|
||
|
include M
|
||
|
|
||
|
class << self
|
||
|
def ns_pub; :ns_pub; end
|
||
|
|
||
|
def ns_pro; :ns_pro; end
|
||
|
protected :ns_pro
|
||
|
|
||
|
def ns_pri; :ns_pri; end
|
||
|
private :ns_pri
|
||
|
end
|
||
|
|
||
|
def n_pub; :n_pub; end
|
||
|
|
||
|
def n_pro; :n_pro; end
|
||
|
protected :n_pro
|
||
|
|
||
|
def n_pri; :n_pri; end
|
||
|
private :n_pri
|
||
|
end
|
||
|
|
||
|
# A simple class.
|
||
|
class A
|
||
|
class << self
|
||
|
def as_pub; :as_pub; end
|
||
|
|
||
|
def as_pro; :as_pro; end
|
||
|
protected :as_pro
|
||
|
|
||
|
def as_pri; :as_pri; end
|
||
|
private :as_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
def a_pub; :a_pub; end
|
||
|
|
||
|
def a_pro; :a_pro; end
|
||
|
protected :a_pro
|
||
|
|
||
|
def a_pri; :a_pri; end
|
||
|
private :a_pri
|
||
|
end
|
||
|
|
||
|
# A simple subclass.
|
||
|
class B < A
|
||
|
class << self
|
||
|
def bs_pub; :bs_pub; end
|
||
|
|
||
|
def bs_pro; :bs_pro; end
|
||
|
protected :bs_pro
|
||
|
|
||
|
def bs_pri; :bs_pri; end
|
||
|
private :bs_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
def b_pub; :b_pub; end
|
||
|
|
||
|
def b_pro; :b_pro; end
|
||
|
protected :b_pro
|
||
|
|
||
|
def b_pri; :b_pri; end
|
||
|
private :b_pri
|
||
|
end
|
||
|
|
||
|
# A subclass including a module.
|
||
|
class C < A
|
||
|
include M
|
||
|
|
||
|
class << self
|
||
|
def cs_pub; :cs_pub; end
|
||
|
|
||
|
def cs_pro; :cs_pro; end
|
||
|
protected :cs_pro
|
||
|
|
||
|
def cs_pri; :cs_pri; end
|
||
|
private :cs_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
def c_pub; :c_pub; end
|
||
|
|
||
|
def c_pro; :c_pro; end
|
||
|
protected :c_pro
|
||
|
|
||
|
def c_pri; :c_pri; end
|
||
|
private :c_pri
|
||
|
end
|
||
|
|
||
|
# A simple class including a module
|
||
|
class D
|
||
|
include M
|
||
|
|
||
|
class << self
|
||
|
def ds_pub; :ds_pub; end
|
||
|
|
||
|
def ds_pro; :ds_pro; end
|
||
|
protected :ds_pro
|
||
|
|
||
|
def ds_pri; :ds_pri; end
|
||
|
private :ds_pri
|
||
|
end
|
||
|
|
||
|
def d_pub; :d_pub; end
|
||
|
|
||
|
def d_pro; :d_pro; end
|
||
|
protected :d_pro
|
||
|
|
||
|
def d_pri; :d_pri; end
|
||
|
private :d_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
# A subclass of a class including a module.
|
||
|
class E < D
|
||
|
class << self
|
||
|
def es_pub; :es_pub; end
|
||
|
|
||
|
def es_pro; :es_pro; end
|
||
|
protected :es_pro
|
||
|
|
||
|
def es_pri; :es_pri; end
|
||
|
private :es_pri
|
||
|
end
|
||
|
|
||
|
def e_pub; :e_pub; end
|
||
|
|
||
|
def e_pro; :e_pro; end
|
||
|
protected :e_pro
|
||
|
|
||
|
def e_pri; :e_pri; end
|
||
|
private :e_pri
|
||
|
|
||
|
def pub; :pub; end
|
||
|
|
||
|
def pro; :pro; end
|
||
|
protected :pro
|
||
|
|
||
|
def pri; :pri; end
|
||
|
private :pri
|
||
|
end
|
||
|
|
||
|
# A subclass that includes a module of a class including a module.
|
||
|
class F < D
|
||
|
include L
|
||
|
|
||
|
class << self
|
||
|
def fs_pub; :fs_pub; end
|
||
|
|
||
|
def fs_pro; :fs_pro; end
|
||
|
protected :fs_pro
|
||
|
|
||
|
def fs_pri; :fs_pri; end
|
||
|
private :fs_pri
|
||
|
end
|
||
|
|
||
|
def f_pub; :f_pub; end
|
||
|
|
||
|
def f_pro; :f_pro; end
|
||
|
protected :f_pro
|
||
|
|
||
|
def f_pri; :f_pri; end
|
||
|
private :f_pri
|
||
|
end
|
||
|
|
||
|
# Class with no singleton methods.
|
||
|
class O
|
||
|
end
|
||
|
|
||
|
# Class extended with a module.
|
||
|
class P
|
||
|
end
|
||
|
P.extend M
|
||
|
end
|