~ubuntu-branches/debian/sid/shiboken/sid

« back to all changes in this revision

Viewing changes to tests/samplebinding/duck_punching_test.py

  • Committer: Package Import Robot
  • Author(s): Didier Raboud
  • Date: 2011-10-26 10:56:09 UTC
  • mfrom: (1.1.13)
  • Revision ID: package-import@ubuntu.com-20111026105609-w7ribe58f5u884em
Tags: 1.0.9-1
* New 1.0.9 upstream release.
* Bump B-Ds:
  - on generatorrunner to 0.6.14;
  - on apiextractor to 0.10.8.

* Add 12 new symbols for 1.0.9.
* Update packaging to 1.0.9:
  - Refresh patches, add pythonversionindep.patch to allow picking a
    specific python version.
  - Make sure the picked pkg-config file is the default one.
  - Update the cmake configuration calls.

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
 
29
29
import types
30
30
import unittest
 
31
from py3kcompat import IS_PY3K
31
32
 
32
33
from sample import VirtualMethods, SimpleFile, Point
33
34
 
 
35
def MethodTypeCompat(func, instance):
 
36
    if IS_PY3K:
 
37
        return types.MethodType(func, instance)
 
38
    else:
 
39
        return types.MethodType(func, instance, type(instance))
 
40
 
34
41
class Duck(VirtualMethods):
35
42
    def __init__(self):
36
43
        VirtualMethods.__init__(self)
60
67
        def myVirtualMethod0(obj, pt, val, cpx, b):
61
68
            self.duck_method_called = True
62
69
            return VirtualMethods.virtualMethod0(obj, pt, val, cpx, b) * self.multiplier
63
 
        vm.virtualMethod0 = types.MethodType(myVirtualMethod0, vm, VirtualMethods)
 
70
        vm.virtualMethod0 = MethodTypeCompat(myVirtualMethod0, vm)
64
71
 
65
72
        result1 = vm.callVirtualMethod0(pt, val, cpx, b)
66
73
        self.assert_(self.duck_method_called)
89
96
        def myVirtualMethod0(obj, pt, val, cpx, b):
90
97
            self.duck_method_called = True
91
98
            return VirtualMethods.virtualMethod0(obj, pt, val, cpx, b) * self.multiplier
92
 
        duck.virtualMethod0 = types.MethodType(myVirtualMethod0, duck, Duck)
 
99
        duck.virtualMethod0 = MethodTypeCompat(myVirtualMethod0, duck)
93
100
 
94
101
        result1 = duck.callVirtualMethod0(pt, val, cpx, b)
95
102
        self.assert_(self.duck_method_called)
114
121
        def myExists(obj):
115
122
            self.duck_method_called = True
116
123
            return False
117
 
        simplefile.exists = types.MethodType(myExists, simplefile, SimpleFile)
 
124
        simplefile.exists = MethodTypeCompat(myExists, simplefile)
118
125
 
119
126
        # Static 'exists' was overridden by the monkey patch, which accepts 0 arguments
120
127
        self.assertRaises(TypeError, simplefile.exists, 'sbrubbles')
138
145
        def myExists(obj):
139
146
            self.duck_method_called = True
140
147
            return False
141
 
        monkey.exists = types.MethodType(myExists, monkey, SimpleFile)
 
148
        monkey.exists = MethodTypeCompat(myExists, monkey)
142
149
 
143
150
        # Static 'exists' was overridden by the monkey patch, which accepts 0 arguments
144
151
        self.assertRaises(TypeError, monkey.exists, 'sbrubbles')
153
160
            self.call_counter += 1
154
161
            return VirtualMethods.virtualMethod0(obj, pt, val, cpx, b)
155
162
        vm = VirtualMethods()
156
 
        vm.virtualMethod0 = types.MethodType(myVirtualMethod0, vm, VirtualMethods)
 
163
        vm.virtualMethod0 = MethodTypeCompat(myVirtualMethod0, vm)
157
164
        pt, val, cpx, b = Point(1.1, 2.2), 4, complex(3.3, 4.4), True
158
165
        vm.virtualMethod0(pt, val, cpx, b)
159
166
        self.assertEqual(self.call_counter, 1)