def test_map_omit_missing_table_columns(self): # Currently, "omit" means "set empty". There's a valid use case for # actually _removing_ colnames here, but [adamhooper, 2019-01-04] we # haven't defined that case yet. dtype = ParamDType.Map(value_dtype=ParamDType.Column()) value = dtype.omit_missing_table_columns({'a': 'X', 'b': 'Y'}, {'X'}) self.assertEqual(value, {'a': 'X', 'b': ''})
def test_map_parse(self): dtype = ParamDType.parse({ 'type': 'map', 'value_dtype': { 'type': 'dict', # test nesting 'properties': { 'foo': { 'type': 'string' }, }, }, }) self.assertEqual( repr(dtype), repr( ParamDType.Map(value_dtype=ParamDType.Dict( properties={ 'foo': ParamDType.String(), }))))
def test_map_coerce_dict_wrong_value_type(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce({'a': 1, 'b': None}) self.assertEqual(value, {'a': '1', 'b': ''})
def test_map_coerce_non_dict(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce([1, 2, 3]) self.assertEqual(value, {})
def test_map_coerce_none(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = dtype.coerce(None) self.assertEqual(value, {})
def test_map_validate_bad_value_dtype(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = {'a': 1, 'c': 2} with self.assertRaises(ValueError): dtype.validate(value)
def test_map_validate_ok(self): dtype = ParamDType.Map(value_dtype=ParamDType.String()) value = {'a': 'b', 'c': 'd'} dtype.validate(value)