Skip to content

Commit 364d900

Browse files
qunaibitsteve-s
authored andcommitted
Add test
1 parent 1dafafd commit 364d900

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

graalpython/com.oracle.graal.python.test/src/tests/test_object.py

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,3 +180,48 @@ def test_descr_call_with_none():
180180
assert None.__class__ is type(None)
181181
assert descr.__get__(None, type(None)) is descr
182182
assert_raises(TypeError, descr.__get__, None, None)
183+
184+
def test_custom_getattribute():
185+
class AAA:
186+
__slots__ = '__wrapped__'
187+
188+
def __init__(self, wrapped):
189+
object.__setattr__(self, '__wrapped__', wrapped)
190+
191+
def __index__(self):
192+
return self.__wrapped__.__index__()
193+
194+
def __len__(self):
195+
return len(self.__wrapped__)
196+
197+
def __contains__(self, value):
198+
return value in self.__wrapped__
199+
200+
def __getitem__(self, key):
201+
return self.__wrapped__[key]
202+
203+
def __setitem__(self, key, value):
204+
self.__wrapped__[key] = value
205+
206+
def __getattr__(self, name):
207+
if name == '__wrapped__':
208+
raise ValueError('wrapper has not been initialised')
209+
210+
return getattr(self.__wrapped__, name)
211+
212+
def __iter__(self):
213+
return iter(self.__wrapped__)
214+
215+
class BBB(AAA):
216+
def __init__(self, wrapped_dict=None):
217+
AAA.__init__(self, wrapped_dict)
218+
219+
def __getattribute__(self, name):
220+
if (hasattr(type(self), name)
221+
and isinstance(getattr(type(self), name), property)):
222+
return object.__getattribute__(self, name)
223+
else:
224+
return super().__getattribute__(name)
225+
226+
d = {"abc": 1}
227+
assert dict(BBB(d)) == d

0 commit comments

Comments
 (0)