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)