tests/validate.py
author Sandro Knauß <knauss@netzguerilla.net>
Mon, 13 Feb 2012 17:11:44 +0100
branchdevel
changeset 145 b58ce5bb96cc
parent 137 e0073c462563
child 178 ee4a6eb5a34b
permissions -rw-r--r--
now offers are empty from start

import unittest

from iro.validate import vBool, vInteger, vHash
from iro.error import ValidateException

class testValidators(unittest.TestCase):
    '''test for simple validators'''

    def testBool(self):
        self.assertEqual(vBool(True,None),True)
        self.assertEqual(vBool(1,None),True)
        self.assertEqual(vBool("true",None),True)
        self.assertEqual(vBool("True",None),True)
        self.assertEqual(vBool("TRUE",None),True)

        self.assertEqual(vBool(False,None),False)
        self.assertEqual(vBool(0,None),False)
        self.assertEqual(vBool("false",None),False)
        self.assertEqual(vBool("False",None),False)
        self.assertEqual(vBool("FALSE",None),False)

        with self.assertRaises(ValidateException) as e:
            vBool("TRue","test")
        self.assertEqual(e.exception.msg,"test is not boolean")

    def testInteger(self):
        self.assertEqual(vInteger(123,None),123)
        self.assertEqual(vInteger("123",None),123)
        self.assertEqual(vInteger("-123",None),-123)

        with self.assertRaises(ValidateException):
            vInteger("a123",None)

    def testIntegerLimits(self):
        self.assertEqual(vInteger(10,None,maxv=10),10)
        with self.assertRaises(ValidateException):
            vInteger(11,None,maxv=10)

        self.assertEqual(vInteger(4,None,minv=4),4)
        with self.assertRaises(ValidateException):
            vInteger(3,None,minv=4)

    def testIntegerNoneAllowed(self):
        self.assertEqual(vInteger(None,None,none_allowed=True),None)
        self.assertEqual(vInteger('',None,none_allowed=True),None)

        with self.assertRaises(ValidateException):
            vInteger("",None)

        with self.assertRaises(ValidateException):
            vInteger(None,None)

    def testHash(self):
        self.assertEqual(vHash("0123456789abcdef",None),"0123456789abcdef")
        self.assertEqual(vHash("0123456789ABCDEF",None),"0123456789abcdef")
        self.assertEqual(vHash("F",None),"f")
        self.assertEqual(vHash("",None),'')

        with self.assertRaises(ValidateException):
            vHash("GHIJKL",None)
        
    def testHashLimits(self):
        self.assertEqual(vHash("F",None,minlength=1),"f")
        with self.assertRaises(ValidateException):
            vHash("",None, minlength=1)

        self.assertEqual(vHash("Fa",None,maxlength=2),"fa")
        with self.assertRaises(ValidateException):
            vHash("123",None, maxlength=1)