File: test_descriptor.py

package info (click to toggle)
pypy 7.0.0%2Bdfsg-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 107,216 kB
  • sloc: python: 1,201,787; ansic: 62,419; asm: 5,169; cpp: 3,017; sh: 2,534; makefile: 545; xml: 243; lisp: 45; awk: 4
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