Wenzel Jakob | 5708221 | 2015-09-04 23:42:12 +0200 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | from __future__ import print_function |
Ben Pritchard | 1b52246 | 2016-03-10 16:31:38 -0500 | [diff] [blame] | 3 | from functools import partial |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 4 | import sys |
| 5 | sys.path.append('.') |
| 6 | |
| 7 | from example import Pet |
| 8 | from example import Dog |
Wenzel Jakob | 48548ea | 2016-01-17 22:36:44 +0100 | [diff] [blame] | 9 | from example import Rabbit |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 10 | from example import dog_bark |
| 11 | from example import pet_print |
| 12 | |
| 13 | polly = Pet('Polly', 'parrot') |
| 14 | molly = Dog('Molly') |
Wenzel Jakob | 48548ea | 2016-01-17 22:36:44 +0100 | [diff] [blame] | 15 | roger = Rabbit('Rabbit') |
| 16 | print(roger.name() + " is a " + roger.species()) |
| 17 | pet_print(roger) |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 18 | print(polly.name() + " is a " + polly.species()) |
| 19 | pet_print(polly) |
| 20 | print(molly.name() + " is a " + molly.species()) |
| 21 | pet_print(molly) |
| 22 | dog_bark(molly) |
| 23 | try: |
| 24 | dog_bark(polly) |
| 25 | except Exception as e: |
| 26 | print('The following error is expected: ' + str(e)) |
| 27 | |
| 28 | from example import test_callback1 |
| 29 | from example import test_callback2 |
| 30 | from example import test_callback3 |
Wenzel Jakob | 281aa0e | 2015-07-30 15:29:00 +0200 | [diff] [blame] | 31 | from example import test_callback4 |
Wenzel Jakob | 19208fe | 2015-10-13 17:37:25 +0200 | [diff] [blame] | 32 | from example import test_cleanup |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 33 | |
| 34 | def func1(): |
| 35 | print('Callback function 1 called!') |
| 36 | |
Wenzel Jakob | 7b8e032 | 2015-08-28 17:49:15 +0200 | [diff] [blame] | 37 | def func2(a, b, c, d): |
| 38 | print('Callback function 2 called : ' + str(a) + ", " + str(b) + ", " + str(c) + ", "+ str(d)) |
Wenzel Jakob | a2f6fde | 2015-10-01 16:46:03 +0200 | [diff] [blame] | 39 | return d |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 40 | |
Ben Pritchard | 1b52246 | 2016-03-10 16:31:38 -0500 | [diff] [blame] | 41 | def func3(a): |
| 42 | print('Callback function 3 called : ' + str(a)) |
| 43 | |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 44 | print(test_callback1(func1)) |
| 45 | print(test_callback2(func2)) |
Ben Pritchard | 1b52246 | 2016-03-10 16:31:38 -0500 | [diff] [blame] | 46 | print(test_callback1(partial(func2, "Hello", "from", "partial", "object"))) |
| 47 | print(test_callback1(partial(func3, "Partial object with one argument"))) |
Wenzel Jakob | 38bd711 | 2015-07-05 20:05:44 +0200 | [diff] [blame] | 48 | |
Wenzel Jakob | a2f6fde | 2015-10-01 16:46:03 +0200 | [diff] [blame] | 49 | test_callback3(lambda i: i + 1) |
| 50 | f = test_callback4() |
Wenzel Jakob | 281aa0e | 2015-07-30 15:29:00 +0200 | [diff] [blame] | 51 | print("func(43) = %i" % f(43)) |
Wenzel Jakob | 19208fe | 2015-10-13 17:37:25 +0200 | [diff] [blame] | 52 | |
| 53 | test_cleanup() |