Exemple #1
0
    def test_merge_list_with_oneof(self):
        "Non-rule node in list's inner spec"

        # TODO: refactor and reformulate.
        #       This test was written for older implementation of Monk.

        int_spec = IsA(int, default=123)
        str_spec = IsA(str, default="foo")

        # no defaults

        # rule = Rule(datatype=list, inner_spec=OneOf([123, 456]))
        item_spec = Any([int_spec, str_spec])
        rule = ListOf(item_spec)
        assert rule.get_default_for([]) == []
        assert rule.get_default_for([789]) == [789]

        # with defaults
        # (same results because defaults have no effect on lists)

        # rule = Rule(datatype=list,
        #            inner_spec=OneOf([123, 456], first_is_default=True))

        item_spec = Any([int_spec, str_spec], first_is_default=True)
        rule = ListOf(item_spec)
        assert rule.get_default_for([]) == []
        assert rule.get_default_for([789]) == [789]
Exemple #2
0
    def test_merge_list_with_oneof(self):
        "Non-rule node in list's inner spec"

        # TODO: refactor and reformulate.
        #       This test was written for older implementation of Monk.

        int_spec = IsA(int, default=123)
        str_spec = IsA(str, default='foo')

        # no defaults

        #rule = Rule(datatype=list, inner_spec=OneOf([123, 456]))
        item_spec = Any([int_spec, str_spec])
        rule = ListOf(item_spec)
        assert rule.get_default_for([]) == []
        assert rule.get_default_for([789]) == [789]

        # with defaults
        # (same results because defaults have no effect on lists)

        #rule = Rule(datatype=list,
        #            inner_spec=OneOf([123, 456], first_is_default=True))

        item_spec = Any([int_spec, str_spec], first_is_default=True)
        rule = ListOf(item_spec)
        assert rule.get_default_for([]) == []
        assert rule.get_default_for([789]) == [789]
Exemple #3
0
    def test_merge_list(self):

        ## present but empty inner spec (optional)
        rule = ListOf([]) | Equals(None)

        # optional missing list
        assert rule.get_default_for(None) == None

        ## present but empty inner spec (required)
        rule = ListOf([])

        # required missing list → empty list
        assert rule.get_default_for(None) == []

        ## present non-empty inner spec (optional)
        rule = ListOf(IsA(int, default=123)) | Equals(None)

        # optional missing list with required item(s)
        assert rule.get_default_for(None) == None

        # optional empty list with required item(s)
        assert rule.get_default_for([]) == []

        ## present non-empty inner spec (optional)
        elem_spec = IsA(int, default=123) | Equals(None)
        rule = ListOf(elem_spec) | Equals(None)

        # optional missing list with optional item(s)
        assert rule.get_default_for(None) == None

        # optional empty list with optional item
        assert rule.get_default_for([]) == []

        ## present non-empty inner spec (required)
        rule = ListOf(IsA(int, default=123))

        # required missing list → inner spec
        assert rule.get_default_for(None) == []

        # required empty list → inner spec
        assert rule.get_default_for([]) == []

        # required non-empty list → inner spec
        #        fallback = lambda s, v, **kw: v
        assert rule.get_default_for([None]) == [None]
        assert rule.get_default_for([456]) == [456]

        ## present inner spec with empty item spec
        rule = ListOf(Anything())
        assert rule.get_default_for([456]) == [456]

        ## present inner spec with item spec that has an inner spec
        # rule = Rule(datatype=list, inner_spec=[123])
        rule = ListOf(ListOf(IsA(int, default=123)))

        # XXX CHANGED    WTF was it before!?
        ##assert rule.get_default_for([None]) == [123]
        # assert rule.get_default_for([[]]) == [[123]]

        # bogus value; will not pass validation but should be preserved
        assert rule.get_default_for(123) == 123
Exemple #4
0
    def test_merge_list(self):

        ## present but empty inner spec (optional)
        rule = ListOf([]) | Equals(None)

        # optional missing list
        assert rule.get_default_for(None) == None

        ## present but empty inner spec (required)
        rule = ListOf([])

        # required missing list → empty list
        assert rule.get_default_for(None) == []

        ## present non-empty inner spec (optional)
        rule = ListOf(IsA(int, default=123)) | Equals(None)

        # optional missing list with required item(s)
        assert rule.get_default_for(None) == None

        # optional empty list with required item(s)
        assert rule.get_default_for([]) == []

        ## present non-empty inner spec (optional)
        elem_spec = IsA(int, default=123) | Equals(None)
        rule = ListOf(elem_spec) | Equals(None)

        # optional missing list with optional item(s)
        assert rule.get_default_for(None) == None

        # optional empty list with optional item
        assert rule.get_default_for([]) == []

        ## present non-empty inner spec (required)
        rule = ListOf(IsA(int, default=123))

        # required missing list → inner spec
        assert rule.get_default_for(None) == []

        # required empty list → inner spec
        assert rule.get_default_for([]) == []

        # required non-empty list → inner spec
        #        fallback = lambda s, v, **kw: v
        assert rule.get_default_for([None]) == [None]
        assert rule.get_default_for([456]) == [456]

        ## present inner spec with empty item spec
        rule = ListOf(Anything())
        assert rule.get_default_for([456]) == [456]

        ## present inner spec with item spec that has an inner spec
        #rule = Rule(datatype=list, inner_spec=[123])
        rule = ListOf(ListOf(IsA(int, default=123)))

        # XXX CHANGED    WTF was it before!?
        ##assert rule.get_default_for([None]) == [123]
        #assert rule.get_default_for([[]]) == [[123]]

        # bogus value; will not pass validation but should be preserved
        assert rule.get_default_for(123) == 123