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]
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]
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
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