def test_positive(self):
     'Положительный тест'
     input   = {'a' : '1', 'b' : {'c' : '2.0', 'd' : ['1', '2', '3']}}
     accepts = {'a' : int, 'b' : {'c' : (float, positive), 'd' : array(int)}}
     xml     = '<input><a type="int">1</a><b type="group"><c type="float positive">2.0</c><d type="array"><item>1</item><item>2</item><item>3</item></d></b></input>'
     
     self.assertEqual(etree.tounicode(serialize_input(input, accepts)), xml)
 def test_positive_error(self):
     'Положительный тест с ошибками'
     
     input   = {'a' : '1,', 'b' : {'c' : '-2.0', 'd' : ['1', '2', '3']}}
     accepts = {'a' : int, 'b' : {'c' : (float, positive), 'd' : array(int)}}
     errors  = {'a' : 'int', 'b.c' : 'positive'}
     
     xml     = '<input><a type="int" error="int">1,</a><b type="group"><c type="float positive" error="positive">-2.0</c><d type="array"><item>1</item><item>2</item><item>3</item></d></b></input>'
     
     self.assertEqual(etree.tounicode(serialize_input(input, accepts, errors = errors)), xml)
# -*- coding: utf-8 -*-

'Тесты для модуля accepts.py'

import os, sys
tests = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.dirname(tests) + '/models')

import unittest

from accepts import array

f = array(float)
class ArrayTest(unittest.TestCase):
    'Тесты для accepts.array'
    
    def test_empty(self):
        'Пустой массив'
        self.assertEqual(f([]), [])
    
    def test_positive(self):
        'Положительный тест'
        self.assertEqual(f(['2.3', '4.5']), [2.3, 4.5])
    
    def test_non_list(self):
        'Входное значение не является списком'
        self.assertRaises(Exception, f, 3.3)
    
    def test_non_float(self):
        'Один из элементов списка не является числом'
        self.assertRaises(Exception, f, ['2,3', '4.5'])