File: test_descriptor.py

package info (click to toggle)
pypy 5.6.0%2Bdfsg-4
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 97,040 kB
  • ctags: 185,069
  • sloc: python: 1,147,862; ansic: 49,642; cpp: 5,245; asm: 5,169; makefile: 529; sh: 481; xml: 232; lisp: 45
file content (29 lines) | stat: -rw-r--r-- 732 bytes parent folder | download | duplicates (9)
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
from rpython.tool.descriptor import InstanceMethod

class X(object):
    def f(self, *args, **kwds):
        return args, kwds

def test_bound():
    obj = X()
    obj.x = 12
    meth = InstanceMethod(X.f.im_func, obj, X)
    assert meth(1, z=2) == ((1,), {'z': 2})

def test_unbound():
    obj = X()
    obj.x = 12
    meth = InstanceMethod(X.f.im_func, None, X)
    assert meth(obj, 1, z=2) == ((1,), {'z': 2})

def test_eq_hash():
    obj1 = X()
    obj1.x = 12
    meth1 = InstanceMethod(X.f.im_func, obj1, X)
    meth1bis = InstanceMethod(X.f.im_func, obj1, X)
    obj2 = X()
    obj2.x = 12
    meth2 = InstanceMethod(X.f.im_func, obj2, X)
    d = {meth1: 123, meth2: 456}
    assert len(d) == 2
    assert d[meth1bis] == 123