PHP Classes

File: test/python/test.py

Recommend this page to a friend!
  Classes of Nikos M.  >  Formal PHP Validation Library  >  test/python/test.py  >  Download  
File: test/python/test.py
Role: Auxiliary data
Content type: text/plain
Description: Auxiliary data
Class: Formal PHP Validation Library
Validate a set values with support to type casting
Author: By
Last change: v.1.2.0

* correctly handle (wildcard) missing keys in typecast/validate
* correctly handle some edge cases when input data is not array or object
* update tests
Date: 1 month ago
Size: 3,141 bytes
 

Contents

Class file image Download
import os, sys

DIR = os.path.dirname(os.path.abspath(__file__))

def import_module(name, path):
    import imp
    try:
        mod_fp, mod_path, mod_desc  = imp.find_module(name, [path])
        mod = getattr( imp.load_module(name, mod_fp, mod_path, mod_desc), name )
    except ImportError as exc:
        mod = None
        sys.stderr.write("Error: failed to import module ({})".format(exc))
    finally:
        if mod_fp: mod_fp.close()
    return mod

# import the Formal.py (as a) module, probably you will want to place this in another dir/package
Formal = import_module('Formal', os.path.join(DIR, '../../src/python/'))
if not Formal:
    print ('Could not load the Formal Module')
    sys.exit(1)
else:
    pass


def test():
    import json

    formal = Formal().option('WILDCARD', '*').option('SEPARATOR', '.').option('break_on_first_error', False)

    formdata = {
        'foo' : '',
        'moo' : [
                {'choo' : 1},
                {'choo' : 2},
                {'choo' : 3},
        ],

        'soo' : [
                {
                    'boo' : 1,
                    'xoo' : 'a'
                },
                {
                    'boo' : 2,
                    'xoo' : 'b'
                },
                {
                    'boo' : 3,
                    'xoo' : 'c'
                },
        ],

        'koo' : [
            '',
            '',
            '',
        ],

        'num' : [
            '0.1',
            '1.2',
        ],

        'date' : [
            '2012-11-02',
            '20-11-02',
        ]
    }

    data = formal.option('defaults', {
            'foo' : 'bar',
            'moo.*.foo' : 'bar',
            'koo.*' : 'bar'
        }).option('typecasters', {
            'koo.*.foo' : Formal.typecast('str'),
            'num.*' : Formal.typecast('composite', [Formal.typecast('float'), Formal.typecast('clamp', [0.0, 1.0])
        ])}).option('validators', {
            'foo.*' : Formal.validate('required'),
            'foo.*.foo' : Formal.validate('required'),
            'moo.*.foo' : Formal.validate('required'),
            'koo.*.foo' : Formal.validate('optional', Formal.validate('required')),
            'date.*' : Formal.validate('match', Formal.datetime('Y-m-d'), '"{key}" should match {args} !'),
            'date.0' : Formal.validate('eq', Formal.field('date.1'))
        }).process(formdata)

    err = formal.getErrors()

    print(json.dumps(formdata, indent=4))

    print(json.dumps(data, indent=4))

    print("\n".join(map(str, err)))

    print(json.dumps(formal.get('soo.1.boo', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.*.boo', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.*.*', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.1.koo', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.*.koo', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.koo.1', 'default', formdata), indent=4))
    print(json.dumps(formal.get('soo.koo.*', 'default', formdata), indent=4))


print('Formal.VERSION ' + Formal.VERSION)
test()
For more information send a message to info at phpclasses dot org.