166 lines
4.7 KiB
Python
166 lines
4.7 KiB
Python
"""Tests (incomplete) for the reportlab.lib.validators module.
|
|
"""
|
|
|
|
from reportlab.test import unittest
|
|
from reportlab.test.utils import makeSuiteForClasses, printLocation
|
|
from reportlab.lib import colors
|
|
from reportlab.lib import validators
|
|
|
|
|
|
class ValidatorTestCase(unittest.TestCase):
|
|
"Test validating functions."
|
|
|
|
def test0(self):
|
|
"Test isBoolean validator."
|
|
|
|
msg = "Validation failed for 'boolean' %s!"
|
|
|
|
booleans = [0, 1, 'yes','no','true','false']
|
|
badbooleans = ['a',3,-1,()]
|
|
isBoolean = validators.isBoolean
|
|
for b in booleans:
|
|
assert isBoolean(b) == 1, msg % str(b)
|
|
for b in badbooleans:
|
|
assert isBoolean(b) == 0, msg % str(b)
|
|
|
|
|
|
def test1(self):
|
|
"Test isNumber validator."
|
|
|
|
msg = 'Validation failed for number %s!'
|
|
|
|
numbers = [0, 1, 2, -1, -2, 0.0, 0.1, -0.1]
|
|
badNumbers = ['aaa',(1,1),(1+1j),colors]
|
|
isNumber = validators.isNumber
|
|
isListOfNumbers = validators.isListOfNumbers
|
|
for n in numbers:
|
|
assert isNumber(n) == 1, msg % str(n)
|
|
for n in badNumbers:
|
|
assert isNumber(n) == 0, msg % str(n)
|
|
|
|
msg = 'Validation failed for numbers %s!'
|
|
|
|
assert isListOfNumbers(numbers) == 1, msg % str(numbers)
|
|
assert isListOfNumbers(badNumbers) == 0, msg % str(badNumbers)
|
|
assert isListOfNumbers(numbers+[colors]) == 0, msg % str(numbers+[colors])
|
|
|
|
|
|
def test2(self):
|
|
"Test isNumberOrNone validator."
|
|
|
|
msg = 'Validation failed for number %s!'
|
|
|
|
numbers = [None, 0, 1, 2, -1, -2, 0.0, 0.1, -0.1] #, 2L, -2L]
|
|
isNumberOrNone = validators.isNumberOrNone
|
|
for n in numbers:
|
|
assert isNumberOrNone(n) == 1, msg % str(n)
|
|
|
|
|
|
def test4(self):
|
|
"Test isString validator."
|
|
|
|
msg = 'Validation failed for string %s!'
|
|
|
|
strings = ['', '\n', ' ', 'foo', '""']
|
|
badStrings = [1,2.0,None,('a','b')]
|
|
isString = validators.isString
|
|
isListOfStrings = validators.isListOfStrings
|
|
for s in strings:
|
|
assert isString(s) == 1, msg % str(s)
|
|
for s in badStrings:
|
|
assert isString(s) == 0, msg % str(s)
|
|
|
|
msg = 'Validation failed for strings %s!'
|
|
|
|
assert isListOfStrings(strings) == 1, msg % str(strings)
|
|
assert isListOfStrings(badStrings) == 0, msg % str(badStrings)
|
|
assert isListOfStrings(strings+[1]) == 0, msg % str(strings+[1])
|
|
|
|
|
|
def test5(self):
|
|
"Test isTextAnchor validator."
|
|
|
|
msg = 'Validation failed for text anchor %s!'
|
|
|
|
strings = ['start', 'middle', 'end']
|
|
isTextAnchor = validators.isTextAnchor
|
|
for s in strings:
|
|
assert isTextAnchor(s) == 1, msg % s
|
|
|
|
"""
|
|
def isListOfNumbersOrNone(x):
|
|
def isListOfShapes(x):
|
|
def isListOfStrings(x):
|
|
def isListOfStringsOrNone(x):
|
|
def isTransform(x):
|
|
def isColor(x):
|
|
def isColorOrNone(x):
|
|
def isValidChild(x):
|
|
class OneOf:
|
|
class SequenceOf:
|
|
"""
|
|
|
|
|
|
def test6(self):
|
|
"Test OneOf validator."
|
|
|
|
msg = 'Validation failed for OneOf %s!'
|
|
|
|
choices = ('clockwise', 'anticlockwise')
|
|
OneOf = validators.OneOf(choices)
|
|
for c in choices:
|
|
assert OneOf(c) == 1, msg % c
|
|
for c in ('a', 'b', 'c'):
|
|
assert OneOf(c) == 0, msg % c
|
|
|
|
OneOf = validators.OneOf('clockwise', 'anticlockwise')
|
|
for c in choices:
|
|
assert OneOf(c) == 1, msg % c
|
|
for c in ('a', 'b', 'c'):
|
|
assert OneOf(c) == 0, msg % c
|
|
|
|
try:
|
|
validators.OneOf(choices,'bongo')
|
|
raise AssertionError, "OneOf failed to detect bad arguments"
|
|
except ValueError:
|
|
pass
|
|
|
|
|
|
def test7(self):
|
|
"Test isInt validator"
|
|
|
|
msg = 'Validation failed for isInt %s!'
|
|
|
|
isInt = validators.isInt
|
|
for c in (1,2,-3,0,'-4','4'):
|
|
assert isInt(c), msg % str(c)
|
|
|
|
for c in (1.2,0.0,-3.0,'-4.0','4.4','AAAA'):
|
|
assert not isInt(c), msg % str(c)
|
|
|
|
|
|
def test8(self):
|
|
"test Sequence of validator"
|
|
|
|
msg = 'Validation failed for SequenceOf %s!'
|
|
|
|
v=validators.SequenceOf(validators.OneOf(('eps','pdf','png','gif','jpg','tif')),lo=1,hi=3,emptyOK=0)
|
|
for c in (['png'],('eps',),('eps','pdf')):
|
|
assert v(c), msg % str(c)
|
|
v._lo = 2
|
|
for c in ([],(),('eps'),('eps','pdf','a'),['eps','pdf','png','gif']):
|
|
assert not v(c), msg % str(c)
|
|
v._emptyOK=1
|
|
for c in ([],(),('eps','pdf')):
|
|
assert v(c), msg % str(c)
|
|
|
|
|
|
def makeSuite():
|
|
return makeSuiteForClasses(ValidatorTestCase)
|
|
|
|
|
|
#noruntests
|
|
if __name__ == "__main__":
|
|
unittest.TextTestRunner().run(makeSuite())
|
|
printLocation()
|