Example #1
0
    def test_Instance(self):
        class A():
            pass

        class B():
            pass

        class C(object):
            def __init__(self, arg):
                if arg > 0:
                    raise ValueError("arg must be nonpositive")

            def __eq__(self, other):
                if other.__class__ == C:
                    return True
                else:
                    return False

        self.assertEqual(validate('best', Instance(str)), 'best')
        a = A()
        self.assertEqual(validate(a, Instance(A)), a)
        with self.assertRaises(ValidationError):
            validate('best', Instance(int))
        with self.assertRaises(ValidationError):
            validate(a, Instance(B))
        c = C(-1)
        self.assertEqual(validate(c, Instance(C)), c)
        self.assertEqual(validate(-1, Instance(C)), c)
        with self.assertRaises(ValidationError):
            validate(1, Instance(C))
Example #2
0
 def test_NDim(self):
     import numpy as np
     self.assertEqual(validate(np.zeros(1), NDim(1)), np.zeros(1))
     self.assertEqual(validate(np.zeros(1), NDim(2)), np.zeros((1, 1)))
     self.assertEqual(validate(np.zeros((1, 1)), NDim(1)), np.zeros(1))
     with self.assertRaises(ValidationError):
         validate(np.zeros((3, 2)), NDim(1))
Example #3
0
    def test_Float(self):
        class tmp(object):
            pass

        self.assertEqual(validate(1.4, Float), 1.4)
        self.assertEqual(validate('1.4', Float), 1.4)
        with self.assertRaises(ValidationError):
            validate(tmp(), Float)
Example #4
0
 def test_Function(self):
     with self.assertRaises(ValidationError):
         validate('mest', Function(lenience=0))
     self.assertEqual(validate('mest', Function)(1), 'mest')
     a = lambda x: 1
     b = validate(a, Function(value_spec=Integer))
     self.assertEqual(b(2), 1)
     c = validate(a, Function(value_spec=Negative))
     with self.assertRaises(ValidationError):
         c(1)
Example #5
0
 def test_Shape(self):
     import numpy as np
     self.assertEqual(validate(np.zeros(1), Shape((1, ))), np.zeros(1))
     self.assertEqual(
         np.array_equal(validate(np.zeros((1, 2)), Shape((1, 2))),
                        np.zeros((1, 2))), True)
     self.assertEqual(
         np.array_equal(
             validate(np.zeros((2, 3)), Shape((3, 2), lenience=2)),
             np.zeros((3, 2))), True)
     with self.assertRaises(ValidationError):
         validate(np.zeros((3, 2)), Shape((2, 3)))
Example #6
0
 def test_Set(self):
     self.assertEqual(validate({'best'}, Set), {'best'})
     self.assertEqual(validate([1, 2], Set), {1, 2})
     self.assertEqual(validate([1, 1], Set(lenience=2)), {1})
     self.assertEqual(validate('best', Set(lenience=2)), {'best'})
     with self.assertRaises(ValidationError):
         validate([1, 1], Set)
     with self.assertRaises(ValidationError):
         validate((1, ), Set(lenience=0))
Example #7
0
 def test_Integer(self):
     self.assertEqual(validate('1', Positive & Integer), 1)
     self.assertEqual(validate(1, Integer), 1)
     self.assertEqual(validate('1', Integer), 1)
     self.assertEqual(validate(2.1, Integer(lenience=2)), 2)
     with self.assertRaises(ValidationError):
         validate(1.5, Integer)
     with self.assertRaises(ValidationError):
         validate('1.5', Integer)
Example #8
0
 def test_InRange(self):
     self.assertEqual(validate(0, InRange(1)), 0)
     self.assertEqual(validate(2, InRange(inf)), 2)
     self.assertEqual(validate(-2, InRange(-2, 3)), -2)
     self.assertEqual(validate(-1, InRange(l=0, r=2, lenience=2)), 0)
     with self.assertRaises(ValidationError):
         validate(2, InRange(2))
     with self.assertRaises(ValidationError):
         validate(-1, InRange(3))
Example #9
0
 def test_Length(self):
     import numpy as np
     self.assertEqual(validate((1, 2), Length(2)), (1, 2))
     self.assertEqual(validate([2, 3], Length(2)), [2, 3])
     self.assertEqual(
         np.array_equal(validate(np.zeros((3, 2)), Length(3)),
                        np.zeros((3, 2))), True)
     self.assertEqual(validate({1: 2, 3: 4}, Length(2)), {1: 2, 3: 4})
     self.assertEqual(validate({}, Length(0)), {})
     with self.assertRaises(ValidationError):
         validate({}, Length(1))
     with self.assertRaises(ValidationError):
         validate({1}, Length(0))
Example #10
0
    def test_Implements(self):
        class A(object):
            @implementation(foo)
            def best(self):
                print('hello')

        class B(object):
            def best(self):
                print('mello')

        a = A()
        self.assertEqual(validate(a, Implements(foo)), a)
        with self.assertRaises(ValueError):
            validate(a, Implements(unittest.main))
        b = B()
        with self.assertRaises(ValidationError):
            validate(b, Implements(foo))
Example #11
0
 def test_Allows(self):
     self.assertEqual(validate({1, 2}, Allows('clear')), {1, 2})
     self.assertEqual(validate(TestSpecifications, Allows('__init__')),
                      TestSpecifications)
     with self.assertRaises(ValidationError):
         validate({1, 2}, Allows('__clear__'))
     with self.assertRaises(ValidationError):
         validate(Any, Allows(''))
     with self.assertRaises(ValidationError):
         validate(os, Allows('__builtins__'))
Example #12
0
 def test_List(self):
     self.assertEqual(validate([1], List), [1])
     self.assertEqual(validate((1, ), List), [1])
     self.assertEqual(validate(('1', ), List(value_spec=Integer)), [1])
     self.assertEqual(
         validate((str(i) for i in range(3)), List(value_spec=Integer)),
         [0, 1, 2])
     with self.assertRaises(ValidationError):
         validate(('1', ), List(value_spec=List))
     with self.assertRaises(ValidationError):
         validate((1, ), List(value_spec=Integer, lenience=0))
Example #13
0
 def test_InInterval(self):
     self.assertEqual(validate(0, InInterval(l=-1, r=1)), 0)
     self.assertEqual(validate(inf, InInterval(l=0, r=inf)), inf)
     self.assertEqual(validate(-1, InInterval(l=0, r=2, lenience=2)), 0)
     with self.assertRaises(ValidationError):
         validate(-1, InInterval(l=1, r=2))
     with self.assertRaises(ValidationError):
         validate(-1, InInterval(l=-1, r=2, lo=True))
Example #14
0
 def test_Lower(self):
     self.assertEqual(validate('lower', Lower), 'lower')
     self.assertEqual(validate('LOwER', Lower(lenience=2)), 'lower')
     with self.assertRaises(ValidationError):
         validate(1, Lower)
     with self.assertRaises(ValidationError):
         validate('lOwer', Lower)
Example #15
0
 def test_Upper(self):
     self.assertEqual(validate('UPPER', Upper), 'UPPER')
     self.assertEqual(validate('UPpeR', Upper(lenience=2)), 'UPPER')
     with self.assertRaises(ValidationError):
         validate(1, Upper)
     with self.assertRaises(ValidationError):
         validate('UPper', Upper)
Example #16
0
 def test_Iterable(self):
     self.assertEqual(validate({1, 2}, Iterable), {1, 2})
     self.assertEqual(validate((), Iterable), ())
     with self.assertRaises(ValidationError):
         validate('asdf', Iterable)
     with self.assertRaises(ValidationError):
         validate(lambda: 1, Iterable)
Example #17
0
 def test_Tuple(self):
     self.assertEqual(validate((1, ), Tuple), (1, ))
     self.assertEqual(validate([1], Tuple), (1, ))
     self.assertEqual(validate([
         '1',
     ], Tuple(value_spec=Integer)), (1, ))
     with self.assertRaises(ValidationError):
         validate([
             '1',
         ], Tuple(value_spec=Tuple))
     with self.assertRaises(ValidationError):
         validate([
             1,
         ], Tuple(value_spec=Integer, lenience=0))
Example #18
0
 def test_Equals(self):
     self.assertEqual(validate('best', Equals('best')), 'best')
     with self.assertRaises(ValidationError):
         validate('best', Equals('Best'))
Example #19
0
 def test_Inverted(self):
     self.assertEqual(validate(1, ~Negative), 1)
     with self.assertRaises(ValidationError):
         validate('UPPER', ~Upper)
Example #20
0
 def test_Negative(self):
     self.assertEqual(validate(-1, Negative), -1)
     with self.assertRaises(ValidationError):
         validate(0, Negative)
Example #21
0
 def test_Concat(self):
     self.assertEqual(
         validate([[[1]]], List(List(List(value_spec=Integer)))), [[[1]]])
     with self.assertRaises(ValidationError):
         validate([[1]], List(List(String)))
Example #22
0
 def test_Bool(self):
     self.assertEqual(validate('true', Bool), True)
     self.assertEqual(validate('False', Bool), False)
     with self.assertRaises(ValidationError):
         validate('b', Bool)
Example #23
0
 def test_String(self):
     self.assertEqual(validate('true', String), 'true')
     with self.assertRaises(ValidationError):
         validate(1, String)
Example #24
0
 def test_Dict(self):
     self.assertEqual(validate({}, Dict), {})
     self.assertEqual(validate((1, 2), Dict(lenience=2)), {0: 1, 1: 2})
     self.assertEqual(validate({'1': 2}, Dict(key_spec=Integer)), {1: 2})
     self.assertEqual(
         validate({'1': 2},
                  Dict(key_spec=Integer, value_spec=String(lenience=2))),
         {1: '2'})
     d = {'best': 1, 'cest': 2, 'test': 0}
     self.assertEqual(
         validate(
             d,
             Arg('best') & ~Arg('test') & (Arg('best') | Arg('test'))
             & Arg('cest') & ((Arg('test') | ~Arg('cest')) > Arg('cest')) &
             (~Arg('cest') > Arg('test'))), d)
     self.assertEqual(validate(d, Arg('best') == Arg('cest')), d)
     with self.assertRaises(ValidationError):
         validate(d, Arg('best') ^ Arg('cest'))
     with self.assertRaises(ValidationError):
         validate(d, Arg('best') > Arg('test'))
     with self.assertRaises(ValidationError):
         validate(d, Arg('test') | Arg('test'))
     with self.assertRaises(ValidationError):
         validate(1, Dict)
     with self.assertRaises(ValidationError):
         validate({2: 'best'}, Dict(value_spec=Integer))
Example #25
0
 def test_Choice(self):
     self.assertEqual(validate('best', In('test', 'mest', 'best')), 'best')
     self.assertEqual(validate('Best', In('test', 'mest', 'best')), 'best')
     self.assertEqual(validate('b', In('test', 'mest', 'best', lenience=2)),
                      'best')
     with self.assertRaises(ValidationError):
         validate('Best', In('test', 'mest', 'best', lenience=0))
     with self.assertRaises(ValidationError):
         validate('b', In('test', 'best', 'brest', lenience=2))
     with self.assertRaises(ValidationError):
         validate('best', In('test', 'mest', 'Best'))
     with self.assertRaises(ValidationError):
         validate('best', In('test', 'tEst', 'Best'))
Example #26
0
 def test_Any(self):
     for arg in (unittest, {}, str, unittest.main, lambda x: lambda: 2,
                 None, 1, 'best'):
         self.assertEqual(validate(arg, Any), arg)
Example #27
0
 def test_All(self):
     self.assertEqual(validate(1, Positive & Integer), 1)
     with self.assertRaises(ValidationError):
         validate(1.4, Positive & Integer)
     with self.assertRaises(ValidationError):
         validate(-1, Positive & Integer)
Example #28
0
 def test_Sum(self):
     self.assertEqual(validate((1, 2), Sum(3)), (1, 2))
     with self.assertRaises(ValidationError):
         validate((1, 2), Sum(5))
Example #29
0
 def test_Nonpositive(self):
     self.assertEqual(validate(0, Nonpositive), 0)
     self.assertEqual(validate(1, Nonpositive(lenience=2)), 0)
     with self.assertRaises(ValidationError):
         validate(1, Nonpositive)
Example #30
0
 def test_Satisfies(self):
     self.assertEqual(validate({1, 2}, Satisfies(lambda x: len(x) == 2)),
                      {1, 2})
     with self.assertRaises(ValidationError):
         validate('Best', Satisfies(lambda x: x.is_lower()))