def test_different_types_is_error(self) -> None: layer_1 = {'a': 'a'} # type: types.Layer layer_2 = {'a': 1} # type: types.Layer with self.assertRaises(flatten.TypeMismatchError) as cm: flatten.flatten(layer_1, layer_2) self.assertEqual( "Entry type mismatch at 'a', got types str and int", str(cm.exception), )
def test_overlapping_deep_nested(self) -> None: layer_1 = {'a': {'b': {'c': 4}}} # type: types.Layer layer_2 = {'a': {'b': {'d': 5}}} # type: types.Layer result = flatten.flatten(layer_1, layer_2) self.assertEqual( {'a': { 'b': { 'c': 4, 'd': 5 } }}, result, )
def test_null_removes_entry(self) -> None: layer_1 = {'a': {'b': None}} # type: types.Layer layer_2 = {'a': {'b': {'X': 1}, 'c': {'Y': 2}}} # type: types.Layer result = flatten.flatten(layer_1, layer_2) self.assertEqual( {'a': { 'b': None, 'c': { 'Y': 2 } }}, result, )
def test_overlapping_shallow_nested(self) -> None: layer_1 = {'a': {'b': {'X': 4}}} # type: types.Layer layer_2 = {'a': {'c': {'Y': 5}}} # type: types.Layer result = flatten.flatten(layer_1, layer_2) self.assertEqual( {'a': { 'b': { 'X': 4 }, 'c': { 'Y': 5 }, }}, result, )
def test_null_removes_entry_when_further_overridden(self) -> None: layer_1 = {'a': {'b': {'Z': 1}}} # type: types.Layer layer_2 = {'a': {'b': None}} # type: types.Layer layer_3 = {'a': {'b': {'X': 1}, 'c': {'Y': 2}}} # type: types.Layer result = flatten.flatten(layer_1, layer_2, layer_3) self.assertEqual( {'a': { 'b': { 'Z': 1 }, 'c': { 'Y': 2 } }}, result, )
def test_single_layer(self) -> None: layer = {'a': 1, 'b': 2} # type: types.Layer result = flatten.flatten(layer) self.assertEqual({'a': 1, 'b': 2}, result)
def test_overlapping_list(self) -> None: layer_1 = {'a': 1, 'b': [2]} # type: types.Layer layer_2 = {'b': [42]} # type: types.Layer result = flatten.flatten(layer_1, layer_2) self.assertEqual({'a': 1, 'b': [2]}, result)
def test_overlapping_scalar(self) -> None: layer_1 = {'a': 1, 'b': 2} # type: types.Layer layer_2 = {'b': 42} # type: types.Layer result = flatten.flatten(layer_1, layer_2) self.assertEqual({'a': 1, 'b': 2}, result)
def test_distinct_layers(self) -> None: layer_1 = {'a': 1} # type: types.Layer layer_2 = {'b': 2} # type: types.Layer layer_3 = {'c': 3} # type: types.Layer result = flatten.flatten(layer_1, layer_2, layer_3) self.assertEqual({'a': 1, 'b': 2, 'c': 3}, result)