aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/zope.interface-3.6.4-py2.7-linux-x86_64.egg/zope/interface/tests/foodforthought.txt
blob: 45d961bead4197f3176bc1a7c43ae84c8de0825a (plain)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
================================
Food-based subscription examples
================================


This file gives more subscription examples using a cooking-based example::

    >>> from zope.interface.adapter import AdapterRegistry
    >>> registry = AdapterRegistry()

    >>> import zope.interface
    >>> class IAnimal(zope.interface.Interface):
    ...     pass
    >>> class IPoultry(IAnimal):
    ...     pass
    >>> class IChicken(IPoultry):
    ...     pass
    >>> class ISeafood(IAnimal):
    ...     pass

Adapting to some other interface for which there is no
subscription adapter returns an empty sequence::

    >>> class IRecipe(zope.interface.Interface):
    ...     pass
    >>> class ISausages(IRecipe):
    ...     pass
    >>> class INoodles(IRecipe):
    ...     pass
    >>> class IKFC(IRecipe):
    ...     pass

    >>> list(registry.subscriptions([IPoultry], IRecipe))
    []

unless we define a subscription::

    >>> registry.subscribe([IAnimal], ISausages, 'sausages')
    >>> list(registry.subscriptions([IPoultry], ISausages))
    ['sausages']

And define another subscription adapter::

    >>> registry.subscribe([IPoultry], INoodles, 'noodles')
    >>> meals = list(registry.subscriptions([IPoultry], IRecipe))
    >>> meals.sort()
    >>> meals
    ['noodles', 'sausages']

    >>> registry.subscribe([IChicken], IKFC, 'kfc')
    >>> meals = list(registry.subscriptions([IChicken], IRecipe))
    >>> meals.sort()
    >>> meals
    ['kfc', 'noodles', 'sausages']

And the answer for poultry hasn't changed::

    >>> meals = list(registry.subscriptions([IPoultry], IRecipe))
    >>> meals.sort()
    >>> meals
    ['noodles', 'sausages']