@@ -47,7 +47,6 @@ def test_named_members_of_hash
47
47
)
48
48
49
49
expected = [
50
- Variable . internal ( name : '#class' , value : Hash ) ,
51
50
Variable . new ( name : ':sym' , value : "has Symbol key" ) ,
52
51
Variable . new ( name : '"str"' , value : "has String key" ) ,
53
52
Variable . new ( name : '1' , value : "has Integer key" ) ,
@@ -73,7 +72,6 @@ def test_named_members_of_struct
73
72
74
73
def test_named_members_of_string
75
74
expected = [
76
- Variable . internal ( name : '#class' , value : String ) ,
77
75
Variable . internal ( name : '#length' , value : 5 ) ,
78
76
Variable . internal ( name : '#encoding' , value : Encoding ::UTF_8 ) ,
79
77
# skip #dump member for short strings
@@ -85,7 +83,6 @@ def test_named_members_of_string
85
83
long_string = "A long string " + ( '*' * 1000 )
86
84
87
85
expected = [
88
- Variable . internal ( name : '#class' , value : String ) ,
89
86
Variable . internal ( name : '#length' , value : long_string . length ) ,
90
87
Variable . internal ( name : '#encoding' , value : Encoding ::UTF_8 ) ,
91
88
Variable . internal ( name : '#dump' , value : VariableInspector ::NaiveString . new ( long_string ) ) ,
@@ -95,10 +92,7 @@ def test_named_members_of_string
95
92
end
96
93
97
94
def test_named_members_of_class
98
- expected = [
99
- Variable . internal ( name : '#class' , value : Class ) ,
100
- Variable . internal ( name : '%ancestors' , value : PointStruct . ancestors . drop ( 1 ) ) ,
101
- ]
95
+ expected = [ Variable . internal ( name : '%ancestors' , value : PointStruct . ancestors . drop ( 1 ) ) , ]
102
96
103
97
assert_equal expected , @inspector . named_members_of ( PointStruct )
104
98
end
@@ -109,10 +103,7 @@ def test_named_members_of_module
109
103
include *ancestors
110
104
end
111
105
112
- expected = [
113
- Variable . internal ( name : '#class' , value : Module ) ,
114
- Variable . internal ( name : '%ancestors' , value : ancestors ) ,
115
- ]
106
+ expected = [ Variable . internal ( name : '%ancestors' , value : ancestors ) ]
116
107
117
108
assert_equal expected , @inspector . named_members_of ( mod )
118
109
end
@@ -196,6 +187,31 @@ def test_named_members_of_other_objects
196
187
assert_equal expected , @inspector . named_members_of ( point )
197
188
end
198
189
190
+ def test_hide_class_of_simple_values
191
+ assert_not_includes @inspector . named_members_of ( nil ) . map ( &:name ) , "#class"
192
+ assert_not_includes @inspector . named_members_of ( true ) , "#class"
193
+ assert_not_includes @inspector . named_members_of ( false ) , "#class"
194
+ assert_not_includes @inspector . named_members_of ( :symbol ) , "#class"
195
+ assert_not_includes @inspector . named_members_of ( "string" ) , "#class"
196
+ assert_not_includes @inspector . named_members_of ( 123 ) , "#class"
197
+ assert_not_includes @inspector . named_members_of ( 123.4 ) , "#class"
198
+ assert_not_includes @inspector . named_members_of ( Class . new ) , "#class"
199
+ assert_not_includes @inspector . named_members_of ( Module . new ) , "#class"
200
+ assert_not_includes @inspector . named_members_of ( Array . new ) , "#class"
201
+ assert_not_includes @inspector . named_members_of ( Hash . new ) , "#class"
202
+ end
203
+
204
+ def test_show_class_of_subclasses_of_simple_types
205
+ # Skipping these classes, which can't be subclassed meaningfully (or at all):
206
+ # NilClass, TrueClass, FalseClass, Symbol, Integer, Float, Class, Module
207
+ string_subclass = Class . new ( String )
208
+ array_subclass = Class . new ( Array )
209
+ hash_subclass = Class . new ( Hash ) # E.g. HashWithIndifferentAccess would behave this way
210
+ assert_includes @inspector . named_members_of ( string_subclass . new ) , Variable . internal ( name : "#class" , value : string_subclass )
211
+ assert_includes @inspector . named_members_of ( array_subclass . new ) , Variable . internal ( name : "#class" , value : array_subclass )
212
+ assert_includes @inspector . named_members_of ( hash_subclass . new ) , Variable . internal ( name : "#class" , value : hash_subclass )
213
+ end
214
+
199
215
private
200
216
201
217
class PointStruct < Struct . new ( :x , :y , keyword_init : true )
0 commit comments