view tests/test_ini.txt @ 70:7ec0ca0134ff

stub getting wrapper options: [foo:@:bar=fleem:baz]
author Jeff Hammel <jhammel@mozilla.com>
date Thu, 09 Jun 2011 17:57:12 -0700
parents b9d9a94bfa19
children 20bdb8125817
line wrap: on
line source

Test IniFactory
===============

Let's test the .ini factory::

    >>> import os
    >>> from pyloader.factory import IniFactory
    >>> inifile = os.path.join(here, 'test.ini')
    >>> inifactory = IniFactory(inifile)

Load it up::

    >>> object = inifactory.load()
    >>> 'objects.py.StringMunge' in repr(object.__class__)
    True

Call it::

    >>> object('foobar')
    'PRE!!!abfoor'

You can also just load the callback::

    >>> callback = inifactory.load('callback')
    >>> callback('foo', 'bar')
    'abfoor'

Lets test the Fibonnaci sequence::

    >>> fib = inifactory.load('fibonacci')
    >>> fib(0) == fib(1) == 1
    True
    >>> [fib(i) for i in range(5)]
    [1, 1, 2, 3, 5]

Now let's test a simple wrapper, [readable-fibonacci:@:%(here)s/objects.py:fib]::

    >>> fib = inifactory.load('readable-fibonacci')
    >>> [fib(i) for i in range(5)]
    ['one', 'one', 'two', 'three', 5]

A different kind of wrapper, wrapping a section, [foo:@:fibonacci]::

    >>> fib = inifactory.load('foo')
    >>> 'objects.py.Wrapper' in repr(fib)
    True
    >>> inifactory.config['foo']['kwargs']['app']
    '%(fibonacci)s'
    >>> [fib(i) for i in range(6)]
    ['one', 'one', 'two', 'three', 5, 8]

Override a section with additional arguments, [bar:fibonacci], n=5::

    >>> bar = inifactory.load('bar')
    >>> bar # [1,1,2,3,5,8][5]
    8