|
extends 'res://addons/gut/test.gd' |
|
|
|
|
|
class TestMergeArray: |
|
extends 'res://addons/gut/test.gd' |
|
|
|
var FuncTools = load('res://path/to/script/FuncTools.gd') |
|
|
|
func test_shallow_WITHOUT_overlap(): |
|
var array1 = ['a', 'b'] |
|
var array2 = ['c'] |
|
var expected = ['a', 'b', 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', 'b']) |
|
assert_eq_deep(array2, ['c']) |
|
|
|
func test_shallow_WITH_overlap(): |
|
var array1 = ['a', 'b'] |
|
var array2 = ['b', 'c'] |
|
var expected = ['a', 'b', 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', 'b']) |
|
assert_eq_deep(array2, ['b', 'c']) |
|
|
|
func test_shallow_with_sub_array_and_dictionary_WITHOUT_overlap(): |
|
var array1 = ['a', {'b': 2}] |
|
var array2 = ['b', 'c'] |
|
var expected = ['a', {'b': 2}, 'b', 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', {'b': 2}]) |
|
assert_eq_deep(array2, ['b', 'c']) |
|
|
|
func test_shallow_with_sub_array_and_dictionary_WITH_overlap(): |
|
var array1 = ['a', {'b': 2}] |
|
var array2 = [{'b': 2}, 'c'] |
|
var expected = ['a', {'b': 2}, {'b': 2}, 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', {'b': 2}]) |
|
assert_eq_deep(array2, [{'b': 2}, 'c']) |
|
|
|
func test_deep_with_sub_array_and_dictionary_WITHOUT_overlap(): |
|
var array1 = ['a', {'b': 2}] |
|
var array2 = [{'b': 'override'}, 'c'] |
|
var expected = ['a', {'b': 2}, {'b': 'override'}, 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', {'b': 2}]) |
|
assert_eq_deep(array2, [{'b': 'override'}, 'c']) |
|
|
|
func test_deep_with_sub_array_and_dictionary_WITH_overlap(): |
|
var array1 = ['a', {'b': 2}] |
|
var array2 = [{'b': 2}, 'c'] |
|
var expected = ['a', {'b': 2}, 'c'] |
|
|
|
var result = FuncTools.merge_array(array1, array2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original Arrays |
|
assert_eq_deep(array1, ['a', {'b': 2}]) |
|
assert_eq_deep(array2, [{'b': 2}, 'c']) |
|
|
|
|
|
class TestMergeDict: |
|
extends 'res://addons/gut/test.gd' |
|
|
|
var FuncTools = load('res://path/to/script/FuncTools.gd') |
|
|
|
func test_shallow_one_dimension_dicts_no_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': 2} |
|
var dict2 = {'c': 3} |
|
var expected = {'a': 1, 'b': 2, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': 2}) |
|
assert_eq_deep(dict2, {'c': 3}) |
|
|
|
func test_shallow_one_dimension_with_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': 2} |
|
var dict2 = {'b': 0, 'c': 3} |
|
var expected = {'a': 1, 'b': 0, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': 2}) |
|
assert_eq_deep(dict2, {'b': 0, 'c': 3}) |
|
|
|
func test_shallow_two_dimensions_no_overlapping_keys(): |
|
var dict1 = {'a': [1, 2, 3], 'b': {'b1': 1}} |
|
var dict2 = {'b': {'b2': 2}, 'c': [4, 5, 6]} |
|
var expected = {'a': [1, 2, 3], 'b': {'b2': 2}, 'c': [4, 5, 6]} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': [1, 2, 3], 'b': {'b1': 1}}) |
|
assert_eq_deep(dict2, {'b': {'b2': 2}, 'c': [4, 5, 6]}) |
|
|
|
func test_shallow_two_dimensions_with_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': {'b1': 1}} |
|
var dict2 = {'b': {'b1': 0, 'b2': 2}, 'c': 3} |
|
var expected = {'a': 1, 'b': {'b1': 0, 'b2': 2}, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': {'b1': 1}}) |
|
assert_eq_deep(dict2, {'b': {'b1': 0, 'b2': 2}, 'c': 3}) |
|
|
|
func test_shallow_with_overlapping_array(): |
|
var dict1 = {'a': [1, 2, 3], 'b': 2} |
|
var dict2 = {'a': [3, 4, 5, 6], 'c': 3} |
|
var expected = {'a': [3, 4, 5, 6], 'b': 2, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, false) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': [1, 2, 3], 'b': 2}) |
|
assert_eq_deep(dict2, {'a': [3, 4, 5, 6], 'c': 3}) |
|
|
|
func test_deep_one_dimension_dicts_no_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': 2} |
|
var dict2 = {'c': 3} |
|
var expected = {'a': 1, 'b': 2, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': 2}) |
|
assert_eq_deep(dict2, {'c': 3}) |
|
|
|
func test_deep_one_dimension_with_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': 2} |
|
var dict2 = {'b': 0, 'c': 3} |
|
var expected = {'a': 1, 'b': 0, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': 2}) |
|
assert_eq_deep(dict2, {'b': 0, 'c': 3}) |
|
|
|
func test_deep_two_dimensions_no_overlapping_keys(): |
|
var dict1 = {'a': [1, 2, 3], 'b': {'b1': 1}} |
|
var dict2 = {'b': {'b2': 2}, 'c': [4, 5, 6]} |
|
var expected = {'a': [1, 2, 3], 'b': {'b1': 1, 'b2': 2}, 'c': [4, 5, 6]} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': [1, 2, 3], 'b': {'b1': 1}}) |
|
assert_eq_deep(dict2, {'b': {'b2': 2}, 'c': [4, 5, 6]}) |
|
|
|
func test_deep_two_dimensions_with_overlapping_keys(): |
|
var dict1 = {'a': 1, 'b': {'b1': 1}} |
|
var dict2 = {'b': {'b1': 0, 'b2': 2}, 'c': 3} |
|
var expected = {'a': 1, 'b': {'b1': 0, 'b2': 2}, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': 1, 'b': {'b1': 1}}) |
|
assert_eq_deep(dict2, {'b': {'b1': 0, 'b2': 2}, 'c': 3}) |
|
|
|
func test_deep_with_overlapping_array(): |
|
var dict1 = {'a': [1, 2, 3], 'b': 2} |
|
var dict2 = {'a': [3, 4, 5, 6], 'c': 3} |
|
var expected = {'a': [1, 2, 3, 4, 5, 6], 'b': 2, 'c': 3} |
|
|
|
var result = FuncTools.merge_dict(dict1, dict2, true) |
|
|
|
assert_eq_deep(result, expected) |
|
|
|
# Shouldn't have modified the original dictionaries |
|
assert_eq_deep(dict1, {'a': [1, 2, 3], 'b': 2}) |
|
assert_eq_deep(dict2, {'a': [3, 4, 5, 6], 'c': 3}) |
[].append_array([])
was added in 3.4 (I think) and{}.merge({})
was added in 3.5