1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 __docformat__ = 'reStructuredText'
20
21 import unittest
22 from pytilities.overloading import overloaded, Overload, Param
23 from pytilities.types import NumberType
26 """Something with an x and y"""
27 x = 1
28 y = 1
29
31 """Some class to test with"""
32
34 return "xy", self, x, y
35
37 return "storage", self, storage
38
39 @overloaded((
40 Overload(__init_xy,
41 Param("x", NumberType, default=0),
42 Param("y", NumberType, default=0)),
43 Overload(__init_storage,
44 Param("storage"))))
46 """docstring is docstring"""
47 pass
48
51 '''Test overloading of a method'''
55
57 """Calls that should end up at xy"""
58 self.assertEquals(self.a.say_ni(), ("xy", self.a, 0, 0))
59 self.assertEquals(self.a.say_ni(3), ("xy", self.a, 3, 0))
60 self.assertEquals(self.a.say_ni(x=3), ("xy", self.a, 3, 0))
61 self.assertEquals(self.a.say_ni(3, 6), ("xy", self.a, 3, 6))
62 self.assertEquals(self.a.say_ni(x=3, y=6), ("xy", self.a, 3, 6))
63 self.assertEquals(self.a.say_ni(y=6), ("xy", self.a, 0, 6))
64
66 """Calls that should end up at storage"""
67 self.assertEquals(self.a.say_ni(self.s), ("storage", self.a, self.s))
68
70 """Calls that should cause assertion errors"""
71 self.assertRaises(AssertionError, lambda: self.a.say_ni(0, self.s))
72
76
78 return "storage", storage
79
80 @overloaded((
81 Overload(__init_xy,
82 Param("x", NumberType, default=0),
83 Param("y", NumberType, default=0)),
84 Overload(__init_storage,
85 Param("storage"))),
86 False)
88 """docstring is docstring"""
89 pass
90
93 '''Test overloading of a function'''
96
98 """Calls that should end up at xy"""
99 self.assertEquals(say_it(), ("xy", 0, 0))
100 self.assertEquals(say_it(3), ("xy", 3, 0))
101 self.assertEquals(say_it(x=3), ("xy", 3, 0))
102 self.assertEquals(say_it(3, 6), ("xy", 3, 6))
103 self.assertEquals(say_it(x=3, y=6), ("xy", 3, 6))
104 self.assertEquals(say_it(y=6), ("xy", 0, 6))
105
107 """Calls that should end up at storage"""
108 self.assertEquals(say_it(self.s), ("storage", self.s))
109
111 """Calls that should cause assertion errors"""
112 self.assertRaises(AssertionError, lambda: say_it(0, self.s))
113
114
115