示例#1
0
def test_constrained_instance_override():
    def make_checker(*ok_values):
        def is_valid(element, value):
            assert isinstance(element, Constrained)
            return value in ok_values

        return is_valid

    el = Constrained(valid_value=make_checker(u'a'))
    assert el.set(u'a')
    assert el.value == u'a'
    assert el.u == u'a'

    assert not el.set(u'b')
    assert el.value is None
    assert el.u == u'b'

    el = Constrained(child_type=Integer, valid_value=make_checker(1, 2))
    assert el.set(u'1')
    assert el.value == 1
    assert el.u == u'1'

    assert el.set(u'2')
    assert el.value == 2
    assert el.u == u'2'

    for invalid in u'3', u'x':
        assert not el.set(invalid)
        assert el.value == None
        assert el.u == invalid
示例#2
0
def test_constrained_instance_override():

    def make_checker(*ok_values):

        def is_valid(element, value):
            assert isinstance(element, Constrained)
            return value in ok_values
        return is_valid

    el = Constrained(valid_value=make_checker(u'a'))
    assert el.set(u'a')
    assert el.value == u'a'
    assert el.u == u'a'

    assert not el.set(u'b')
    assert el.value is None
    assert el.u == u'b'

    el = Constrained(child_type=Integer, valid_value=make_checker(1, 2))
    assert el.set(u'1')
    assert el.value == 1
    assert el.u == u'1'

    assert el.set(u'2')
    assert el.value == 2
    assert el.u == u'2'

    for invalid in u'3', u'x':
        assert not el.set(invalid)
        assert el.value == None
        assert el.u == invalid
示例#3
0
def test_constrained_instance_contrived():
    # check that fringe types that adapt as None can used in bounds

    class CustomInteger(Integer):
        def adapt(self, value):
            try:
                return Integer.adapt(self, value)
            except:
                return None

    el = Constrained(child_type=CustomInteger,
                     valid_value=lambda e, v: v in (1, None))
    assert el.set(u'1')

    for out_of_bounds in u'2', u'3':
        assert not el.set(out_of_bounds)

    for invalid in u'x', u'':
        assert el.set(invalid)
        assert el.value is None
        assert el.u == u''
示例#4
0
def test_constrained_instance_contrived():
    # check that fringe types that adapt as None can used in bounds

    class CustomInteger(Integer):

        def adapt(self, value):
            try:
                return Integer.adapt(self, value)
            except:
                return None

    el = Constrained(child_type=CustomInteger,
                     valid_value=lambda e, v: v in (1, None))
    assert el.set(u'1')

    for out_of_bounds in u'2', u'3':
        assert not el.set(out_of_bounds)

    for invalid in u'x', u'':
        assert el.set(invalid)
        assert el.value is None
        assert el.u == u''
示例#5
0
def test_constrained_no_default_validity():
    el = Constrained(u'anything')
    assert el.value is None
    assert el.u == u'anything'