diff --git a/.gitignore b/.gitignore index dbdb533..1e19a93 100644 --- a/.gitignore +++ b/.gitignore @@ -102,4 +102,3 @@ ENV/ # other *.swp -*.got diff --git a/tests/cli/test_cli.py b/tests/cli/test_cli.py index dfb4f92..85571bd 100644 --- a/tests/cli/test_cli.py +++ b/tests/cli/test_cli.py @@ -9,6 +9,16 @@ def encode(self, data): return data +def test_abstract_dumper_encode(): + with pytest.raises(NotImplementedError): + cli.Dumper().encode('data') + + +def test_abstract_loader_decode(): + with pytest.raises(NotImplementedError): + cli.Loader().decode('data') + + def test_dumper_dump_default_with_tty(stringio_tty): dumper = Dumper() dumper.dump(stringio_tty, 'text') @@ -71,21 +81,27 @@ class FakeFP(object): 'yml': 'yaml', } fake_fp = FakeFP() - app = cli.App(args=()) for ext in sorted(aliases): fake_fp.name = 'filename.' + ext - assert aliases[ext] == app.guess_fmt(fake_fp, 'default') + assert aliases[ext] == cli.App(args=()).guess_fmt(fake_fp, 'default') def test_guess_fmt_ignore_fp_defaults(): - app = cli.App(args=()) for fp in sys.stdin, sys.stdout, sys.stderr: - assert 'default' == app.guess_fmt(fp, 'default') + assert 'default' == cli.App(args=()).guess_fmt(fp, 'default') -def test_get_loader_unsupported_fmt(): - app = cli.App(args=()) +def test_get_dumper_unsupported_fmt(): + with pytest.raises(RuntimeError, match='Unsupported output format: garbage'): + cli.App(args=()).get_dumper('garbage') + +def test_get_loader_unsupported_fmt(): with pytest.raises(RuntimeError, match='Unsupported input format: garbage'): - app.get_loader('garbage') + cli.App(args=()).get_loader('garbage') + + +def test_run(): + with pytest.raises(NotImplementedError): + cli.App(args=()).run() diff --git a/tests/cli/test_diff_tool.py b/tests/cli/test_diff_tool.py index 13ad3c0..0cc4f0c 100644 --- a/tests/cli/test_diff_tool.py +++ b/tests/cli/test_diff_tool.py @@ -44,19 +44,20 @@ def test_enable_U_ops(capsys, expected, fullname): assert expected == captured.out -def test_output_file(capsys, expected, fullname, testfile): +def test_output_file(capsys, content, expected, fullname, tmp_path): + result_file_name = '{}.got'.format(tmp_path) nested_diff.diff_tool.App(args=( fullname('lists.a.json', shared=True), fullname('lists.b.json', shared=True), '--ofmt', 'json', - '--out', fullname('got'), + '--out', result_file_name, )).run() captured = capsys.readouterr() assert '' == captured.err assert '' == captured.out - assert json.loads(expected) == json.loads(testfile('got')) + assert json.loads(expected) == json.loads(content(result_file_name)) def test_json_ofmt_opts(capsys, expected, fullname): diff --git a/tests/cli/test_patch_tool.py b/tests/cli/test_patch_tool.py index ff8efaa..5861b2b 100644 --- a/tests/cli/test_patch_tool.py +++ b/tests/cli/test_patch_tool.py @@ -7,13 +7,14 @@ import nested_diff.patch_tool -def test_default_patch(capsys, content, fullname): +def test_default_patch(capsys, content, fullname, tmp_path): + result_file_name = '{}.got.json'.format(tmp_path) copyfile( fullname('lists.a.json', shared=True), - fullname('got.json'), + result_file_name, ) nested_diff.patch_tool.App(args=( - fullname('got.json'), + result_file_name, fullname('lists.patch.yaml', shared=True), )).run() @@ -22,16 +23,17 @@ def test_default_patch(capsys, content, fullname): assert '' == captured.err assert json.loads(content(fullname('lists.b.json', shared=True))) == \ - json.loads(content(fullname('got.json'))) + json.loads(content(result_file_name)) -def test_json_ofmt_opts(capsys, content, expected, fullname): +def test_json_ofmt_opts(capsys, content, expected, fullname, tmp_path): + result_file_name = '{}.got.json'.format(tmp_path) copyfile( fullname('lists.a.json', shared=True), - fullname('got.json'), + result_file_name, ) nested_diff.patch_tool.App(args=( - fullname('got.json'), + result_file_name, fullname('lists.patch.json', shared=True), '--ofmt', 'json', '--ofmt-opts', '{"indent": null}', @@ -41,16 +43,17 @@ def test_json_ofmt_opts(capsys, content, expected, fullname): assert '' == captured.out assert '' == captured.err - assert json.loads(expected) == json.loads(content(fullname('got.json'))) + assert json.loads(expected) == json.loads(content(result_file_name)) -def test_yaml_ifmt(capsys, content, fullname): +def test_yaml_ifmt(capsys, content, fullname, tmp_path): + result_file_name = '{}.got'.format(tmp_path) copyfile( fullname('lists.a.yaml', shared=True), - fullname('got'), + result_file_name, ) nested_diff.patch_tool.App(args=( - fullname('got'), + result_file_name, fullname('lists.patch.yaml', shared=True), '--ifmt', 'yaml', )).run() @@ -61,16 +64,17 @@ def test_yaml_ifmt(capsys, content, fullname): # output is json by default assert json.loads(content(fullname('lists.b.json', shared=True))) == \ - json.loads(content(fullname('got'))) + json.loads(content(result_file_name)) -def test_yaml_ofmt(capsys, content, expected, fullname): +def test_yaml_ofmt(capsys, content, expected, fullname, tmp_path): + result_file_name = '{}.got.json'.format(tmp_path) copyfile( fullname('lists.a.json', shared=True), - fullname('got.json'), + result_file_name, ) nested_diff.patch_tool.App(args=( - fullname('got.json'), + result_file_name, fullname('lists.patch.json', shared=True), '--ofmt', 'yaml', )).run() @@ -79,7 +83,7 @@ def test_yaml_ofmt(capsys, content, expected, fullname): assert '' == captured.out assert '' == captured.err - assert expected == content(fullname('got.json')) + assert expected == content(result_file_name) def test_entry_point(capsys): diff --git a/tests/common.py b/tests/common.py new file mode 100644 index 0000000..f4b59b9 --- /dev/null +++ b/tests/common.py @@ -0,0 +1,85 @@ +import os +import pytest + +import nested_diff + + +def do_test_function(test, func): + if 'diff' not in test: + print(nested_diff.diff(test['a'], test['b'])) + + if 'raises' in test: + with test['raises']: + func(test) + else: + assert test['result'] == func(test) + + +def iterate_test_suite(tests_map, results_mod, func): + results_map = {} if 'CANONIZE' in os.environ else results_mod.RESULTS + + for name, test in sorted(tests_map.items()): + if 'CANONIZE' in os.environ: + try: + test['result'] = func(test) + results_map[name] = {'result': test['result']} + except Exception as e: + results_map[name] = { + 'raises': e if type(e) is type else type(e), + } + else: + try: + test['result'] = results_map[name]['result'] + except KeyError: + test['raises'] = pytest.raises(results_map[name]['raises']) + + if 'result' in test or 'raises' in test: + marks = [] + else: + marks = [pytest.mark.xfail] + + yield pytest.param(test, func, id=name, marks=marks) + + if 'CANONIZE' in os.environ: + save_test_suite(results_mod.__file__, results_map) + + +def save_test_suite(filename, results): + with open(filename, 'w') as f: + f.write('''""" +Autogenerated, do not edit manually! + +""" +import sys + + +RESULTS = { +''') + + for k, v in sorted(results.items()): + t = 'result' if 'result' in v else 'raises' + if 'raises' in v: + t = 'raises' + r = v['raises'].__name__ + else: + t = 'result' + r = repr(v['result']) + + f.write("""\ + '{name}': {{ + '{type}': {result}, + }}, +""".format(name=k, type=t, result=r)) + + f.write("""} + + +if __name__ == '__main__': + names = sys.argv[1:] if len(sys.argv) > 1 else sorted(RESULTS.keys()) + headers = len(names) > 1 + + for name in names: + if headers: + print('========== ' + name + ' ==========') + print(RESULTS[name].get('result', None), end='') +""") diff --git a/tests/conftest.py b/tests/conftest.py index d0aed99..203c991 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -4,6 +4,9 @@ from io import StringIO +pytest.register_assert_rewrite('tests.common') + + def get_testfile_name(request, suffix='dat', shared=False): if shared: return os.path.join( @@ -39,16 +42,6 @@ def _name_getter(suffix, shared=False): return _name_getter -@pytest.fixture -def testfile(request): - def _content_getter(suffix, shared=False): - filename = get_testfile_name(request, suffix=suffix, shared=shared) - with open(filename) as f: - return f.read() - - return _content_getter - - @pytest.fixture def stringio(): return StringIO() diff --git a/tests/data/formatters/TermFormatter.py b/tests/data/formatters/TermFormatter.py new file mode 100644 index 0000000..98283ef --- /dev/null +++ b/tests/data/formatters/TermFormatter.py @@ -0,0 +1,415 @@ +""" +Autogenerated, do not edit manually! + +""" +import sys + + +RESULTS = { + '0_vs_0': { + 'result': ' 0\x1b[0m\n', + }, + '0_vs_0_noU': { + 'result': '', + }, + '0_vs_1': { + 'result': '\x1b[31m- 0\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + '0_vs_empty_string': { + 'result': "\x1b[31m- 0\x1b[0m\n\x1b[32m+ ''\x1b[0m\n", + }, + '0_vs_undef': { + 'result': '\x1b[31m- 0\x1b[0m\n\x1b[32m+ None\x1b[0m\n', + }, + '1.0_vs_1.0_as_string': { + 'result': "\x1b[31m- 1\x1b[0m\n\x1b[32m+ '1.0'\x1b[0m\n", + }, + '1_vs_-1': { + 'result': '\x1b[31m- 1\x1b[0m\n\x1b[32m+ -1\x1b[0m\n', + }, + '1_vs_1.0': { + 'result': ' 1\x1b[0m\n', + }, + '1_vs_1_as_string': { + 'result': "\x1b[31m- 1\x1b[0m\n\x1b[32m+ '1'\x1b[0m\n", + }, + 'a_vs_a': { + 'result': " 'a'\x1b[0m\n", + }, + 'a_vs_b': { + 'result': "\x1b[31m- 'a'\x1b[0m\n\x1b[32m+ 'b'\x1b[0m\n", + }, + 'absent_emitter': { + 'raises': NotImplementedError, + }, + 'brackets': { + 'result': " {'('}\x1b[0m\n\x1b[31m- ')'\x1b[0m\n\x1b[32m+ '('\x1b[0m\n {'<'}\x1b[0m\n\x1b[31m- '>'\x1b[0m\n\x1b[32m+ '<'\x1b[0m\n {'['}\x1b[0m\n\x1b[31m- ']'\x1b[0m\n\x1b[32m+ '['\x1b[0m\n {'{'}\x1b[0m\n\x1b[31m- '}'\x1b[0m\n\x1b[32m+ '{'\x1b[0m\n", + }, + 'deeply_nested_hash_vs_empty_hash': { + 'result': "\x1b[1;31m- {'one'}\x1b[0m\n\x1b[31m- {'two': {'three': 3}}\x1b[0m\n", + }, + 'deeply_nested_hash_vs_empty_hash_trimR': { + 'result': "\x1b[1;31m- {'one'}\x1b[0m\n\x1b[31m- None\x1b[0m\n", + }, + 'deeply_nested_list_vs_empty_list': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- [[0, 1]]\x1b[0m\n', + }, + 'deeply_nested_list_vs_empty_list_trimR': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- None\x1b[0m\n', + }, + 'deeply_nested_subhash_removed_from_hash': { + 'result': " {'four'}\x1b[0m\n 4\x1b[0m\n\x1b[1;31m- {'one'}\x1b[0m\n\x1b[31m- {'two': {'three': 3}}\x1b[0m\n", + }, + 'deeply_nested_subhash_removed_from_hash_trimR': { + 'result': " {'four'}\x1b[0m\n 4\x1b[0m\n\x1b[1;31m- {'one'}\x1b[0m\n\x1b[31m- None\x1b[0m\n", + }, + 'deeply_nested_sublist_removed_from_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- [[0, 1]]\x1b[0m\n', + }, + 'deeply_nested_sublist_removed_from_list_trimR': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- None\x1b[0m\n', + }, + 'empty_hash_vs_empty_hash': { + 'result': ' {}\x1b[0m\n', + }, + 'empty_hash_vs_empty_hash_noU': { + 'result': '', + }, + 'empty_hash_vs_empty_list': { + 'result': '\x1b[31m- {}\x1b[0m\n\x1b[32m+ []\x1b[0m\n', + }, + 'empty_hash_vs_hash_with_one_key': { + 'result': "\x1b[1;32m+ {'one'}\x1b[0m\n\x1b[32m+ 1\x1b[0m\n", + }, + 'empty_hash_vs_hash_with_one_key_noA': { + 'result': '', + }, + 'empty_list_vs_deeply_nested_list': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ [[0, 1]]\x1b[0m\n', + }, + 'empty_list_vs_empty_hash': { + 'result': '\x1b[31m- []\x1b[0m\n\x1b[32m+ {}\x1b[0m\n', + }, + 'empty_list_vs_empty_list': { + 'result': ' []\x1b[0m\n', + }, + 'empty_list_vs_empty_list_noU': { + 'result': '', + }, + 'empty_list_vs_list_with_one_item': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n', + }, + 'empty_list_vs_list_with_one_item_noA': { + 'result': '', + }, + 'empty_string_vs_0': { + 'result': "\x1b[31m- ''\x1b[0m\n\x1b[32m+ 0\x1b[0m\n", + }, + 'empty_string_vs_undef': { + 'result': "\x1b[31m- ''\x1b[0m\n\x1b[32m+ None\x1b[0m\n", + }, + 'escaped_symbols': { + 'result': " {'\\n'}\x1b[0m\n\x1b[31m- '\\r\\n'\x1b[0m\n\x1b[32m+ '\\n'\x1b[0m\n", + }, + 'frozenset_extended': { + 'result': '\x1b[34m# \x1b[0m\n 1\x1b[0m\n\x1b[32m+ 2\x1b[0m\n', + }, + 'frozensets_lcs': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[31m- 1\x1b[0m\n 2\x1b[0m\n\x1b[32m+ 3\x1b[0m\n', + }, + 'hash_with_one_key_vs_empty_hash': { + 'result': "\x1b[1;31m- {'one'}\x1b[0m\n\x1b[31m- 1\x1b[0m\n", + }, + 'hash_with_one_key_vs_empty_hash_noR': { + 'result': '', + }, + 'hashes_with_one_different_value_noN': { + 'result': " {'one'}\x1b[0m\n\x1b[31m- 1\x1b[0m\n", + }, + 'hashes_with_one_different_value_noO': { + 'result': " {'one'}\x1b[0m\n\x1b[32m+ 2\x1b[0m\n", + }, + 'list_with_one_item_vs_empty_list': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n', + }, + 'list_with_one_item_vs_empty_list_noR': { + 'result': '', + }, + 'lists_LCS_added_items': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n [3]\x1b[0m\n 3\x1b[0m\n\x1b[1;32m+ [4]\x1b[0m\n\x1b[32m+ 4\x1b[0m\n [5]\x1b[0m\n 5\x1b[0m\n\x1b[1;32m+ [6]\x1b[0m\n\x1b[32m+ 6\x1b[0m\n\x1b[1;32m+ [7]\x1b[0m\n\x1b[32m+ 7\x1b[0m\n', + }, + 'lists_LCS_added_items_noU': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n\x1b[1;32m+ [2]\x1b[0m\n\x1b[32m+ 4\x1b[0m\n\x1b[1;32m+ [3]\x1b[0m\n\x1b[32m+ 6\x1b[0m\n\x1b[1;32m+ [4]\x1b[0m\n\x1b[32m+ 7\x1b[0m\n', + }, + 'lists_LCS_changed_items': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n 1\x1b[0m\n [2]\x1b[0m\n\x1b[31m- 2\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [3]\x1b[0m\n\x1b[31m- 3\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [4]\x1b[0m\n 4\x1b[0m\n [5]\x1b[0m\n\x1b[31m- 5\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [6]\x1b[0m\n 6\x1b[0m\n [7]\x1b[0m\n 7\x1b[0m\n', + }, + 'lists_LCS_changed_items_noOU': { + 'result': ' [2]\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [3]\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [5]\x1b[0m\n\x1b[32m+ 9\x1b[0m\n', + }, + 'lists_LCS_changed_items_noU': { + 'result': ' [2]\x1b[0m\n\x1b[31m- 2\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [3]\x1b[0m\n\x1b[31m- 3\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [5]\x1b[0m\n\x1b[31m- 5\x1b[0m\n\x1b[32m+ 9\x1b[0m\n', + }, + 'lists_LCS_complex': { + 'result': "\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 'a'\x1b[0m\n [1]\x1b[0m\n 'b'\x1b[0m\n [2]\x1b[0m\n 'c'\x1b[0m\n\x1b[1;32m+ [3]\x1b[0m\n\x1b[32m+ 'd'\x1b[0m\n [4]\x1b[0m\n 'e'\x1b[0m\n [5]\x1b[0m\n\x1b[31m- 'h'\x1b[0m\n\x1b[32m+ 'f'\x1b[0m\n [6]\x1b[0m\n 'j'\x1b[0m\n\x1b[1;32m+ [7]\x1b[0m\n\x1b[32m+ 'k'\x1b[0m\n [8]\x1b[0m\n 'l'\x1b[0m\n [9]\x1b[0m\n 'm'\x1b[0m\n [10]\x1b[0m\n\x1b[31m- 'n'\x1b[0m\n\x1b[32m+ 'r'\x1b[0m\n [11]\x1b[0m\n\x1b[31m- 'p'\x1b[0m\n\x1b[32m+ 's'\x1b[0m\n\x1b[1;32m+ [12]\x1b[0m\n\x1b[32m+ 't'\x1b[0m\n", + }, + 'lists_LCS_complex_noAU': { + 'result': "\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 'a'\x1b[0m\n [4]\x1b[0m\n\x1b[31m- 'h'\x1b[0m\n\x1b[32m+ 'f'\x1b[0m\n [8]\x1b[0m\n\x1b[31m- 'n'\x1b[0m\n\x1b[32m+ 'r'\x1b[0m\n [9]\x1b[0m\n\x1b[31m- 'p'\x1b[0m\n\x1b[32m+ 's'\x1b[0m\n", + }, + 'lists_LCS_complex_noRU': { + 'result': "\x1b[1;32m+ [3]\x1b[0m\n\x1b[32m+ 'd'\x1b[0m\n [4]\x1b[0m\n\x1b[31m- 'h'\x1b[0m\n\x1b[32m+ 'f'\x1b[0m\n\x1b[1;32m+ [6]\x1b[0m\n\x1b[32m+ 'k'\x1b[0m\n [8]\x1b[0m\n\x1b[31m- 'n'\x1b[0m\n\x1b[32m+ 'r'\x1b[0m\n [9]\x1b[0m\n\x1b[31m- 'p'\x1b[0m\n\x1b[32m+ 's'\x1b[0m\n\x1b[1;32m+ [10]\x1b[0m\n\x1b[32m+ 't'\x1b[0m\n", + }, + 'lists_LCS_complex_noU': { + 'result': "\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 'a'\x1b[0m\n\x1b[1;32m+ [3]\x1b[0m\n\x1b[32m+ 'd'\x1b[0m\n [4]\x1b[0m\n\x1b[31m- 'h'\x1b[0m\n\x1b[32m+ 'f'\x1b[0m\n\x1b[1;32m+ [6]\x1b[0m\n\x1b[32m+ 'k'\x1b[0m\n [8]\x1b[0m\n\x1b[31m- 'n'\x1b[0m\n\x1b[32m+ 'r'\x1b[0m\n [9]\x1b[0m\n\x1b[31m- 'p'\x1b[0m\n\x1b[32m+ 's'\x1b[0m\n\x1b[1;32m+ [10]\x1b[0m\n\x1b[32m+ 't'\x1b[0m\n", + }, + 'lists_LCS_complex_onlyU': { + 'result': " [1]\x1b[0m\n 'b'\x1b[0m\n [2]\x1b[0m\n 'c'\x1b[0m\n [3]\x1b[0m\n 'e'\x1b[0m\n [5]\x1b[0m\n 'j'\x1b[0m\n [6]\x1b[0m\n 'l'\x1b[0m\n [7]\x1b[0m\n 'm'\x1b[0m\n", + }, + 'lists_LCS_removed_items': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n [3]\x1b[0m\n 3\x1b[0m\n\x1b[1;31m- [4]\x1b[0m\n\x1b[31m- 4\x1b[0m\n [5]\x1b[0m\n 5\x1b[0m\n\x1b[1;31m- [6]\x1b[0m\n\x1b[31m- 6\x1b[0m\n\x1b[1;31m- [7]\x1b[0m\n\x1b[31m- 7\x1b[0m\n', + }, + 'lists_LCS_removed_items_noU': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n\x1b[1;31m- [4]\x1b[0m\n\x1b[31m- 4\x1b[0m\n\x1b[1;31m- [6]\x1b[0m\n\x1b[31m- 6\x1b[0m\n\x1b[1;31m- [7]\x1b[0m\n\x1b[31m- 7\x1b[0m\n', + }, + 'lists_with_one_different_item': { + 'result': ' [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'lists_with_one_different_item_noN': { + 'result': ' [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n', + }, + 'lists_with_one_different_item_noO': { + 'result': ' [0]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'mixed_specific_structures': { + 'result': ' (0)\x1b[0m\n\x1b[31m- ()\x1b[0m\n\x1b[32m+ frozenset()\x1b[0m\n (1)\x1b[0m\n\x1b[34m# \x1b[0m\n\x1b[32m+ True\x1b[0m\n', + }, + 'multiline__empty_vs_multiline': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1 +1,2 @@\x1b[0m\n\x1b[31m- \x1b[0m\n\x1b[32m+ A\x1b[0m\n\x1b[32m+ B\x1b[0m\n', + }, + 'multiline__equal': { + 'result': '', + }, + 'multiline__line_added': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1,2 +1,3 @@\x1b[0m\n\x1b[32m+ A\x1b[0m\n B\x1b[0m\n C\x1b[0m\n', + }, + 'multiline__line_changed': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1,3 +1,3 @@\x1b[0m\n A\x1b[0m\n\x1b[31m- B\x1b[0m\n\x1b[32m+ b\x1b[0m\n C\x1b[0m\n', + }, + 'multiline__line_changed_ctx_0': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -2 +2 @@\x1b[0m\n\x1b[31m- B\x1b[0m\n\x1b[32m+ b\x1b[0m\n', + }, + 'multiline__line_removed': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1,3 +1,2 @@\x1b[0m\n A\x1b[0m\n\x1b[31m- B\x1b[0m\n C\x1b[0m\n', + }, + 'multiline__trailing_newlines': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1,3 +1,3 @@\x1b[0m\n A\x1b[0m\n\x1b[31m- B\x1b[0m\n\x1b[32m+ b\x1b[0m\n \x1b[0m\n', + }, + 'multiline__vs_empty': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[35m @@ -1,2 +1 @@\x1b[0m\n\x1b[31m- A\x1b[0m\n\x1b[31m- B\x1b[0m\n\x1b[32m+ \x1b[0m\n', + }, + 'nested_hashes': { + 'result': "\x1b[1;32m+ {'four'}\x1b[0m\n\x1b[32m+ 4\x1b[0m\n {'one'}\x1b[0m\n 1\x1b[0m\n\x1b[1;31m- {'three'}\x1b[0m\n\x1b[31m- 3\x1b[0m\n {'two'}\x1b[0m\n {'nine'}\x1b[0m\n\x1b[31m- 9\x1b[0m\n\x1b[32m+ 8\x1b[0m\n {'ten'}\x1b[0m\n 10\x1b[0m\n", + }, + 'nested_hashes_noU': { + 'result': "\x1b[1;32m+ {'four'}\x1b[0m\n\x1b[32m+ 4\x1b[0m\n\x1b[1;31m- {'three'}\x1b[0m\n\x1b[31m- 3\x1b[0m\n {'two'}\x1b[0m\n {'nine'}\x1b[0m\n\x1b[31m- 9\x1b[0m\n\x1b[32m+ 8\x1b[0m\n", + }, + 'nested_hashes_with_one_different_value': { + 'result': " {'one'}\x1b[0m\n {'two'}\x1b[0m\n {'three'}\x1b[0m\n\x1b[31m- 3\x1b[0m\n\x1b[32m+ 4\x1b[0m\n", + }, + 'nested_hashes_with_one_equal_value': { + 'result': " {'one': {'two': {'three': 3}}}\x1b[0m\n", + }, + 'nested_hashes_with_one_equal_value_noU': { + 'result': '', + }, + 'nested_lists': { + 'result': " [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n [[100]]\x1b[0m\n [2]\x1b[0m\n [0]\x1b[0m\n 20\x1b[0m\n [1]\x1b[0m\n\x1b[31m- '30'\x1b[0m\n\x1b[32m+ '31'\x1b[0m\n [3]\x1b[0m\n\x1b[31m- 4\x1b[0m\n\x1b[32m+ 5\x1b[0m\n", + }, + 'nested_lists_noU': { + 'result': " [2]\x1b[0m\n [1]\x1b[0m\n\x1b[31m- '30'\x1b[0m\n\x1b[32m+ '31'\x1b[0m\n [3]\x1b[0m\n\x1b[31m- 4\x1b[0m\n\x1b[32m+ 5\x1b[0m\n", + }, + 'nested_lists_with_one_different_item': { + 'result': ' [0]\x1b[0m\n [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'nested_lists_with_one_equal_item': { + 'result': ' [[0]]\x1b[0m\n', + }, + 'nested_lists_with_one_equal_item_noU': { + 'result': '', + }, + 'nested_mixed_structures': { + 'result': " {'one'}\x1b[0m\n [0]\x1b[0m\n {'two'}\x1b[0m\n {'three'}\x1b[0m\n [0]\x1b[0m\n 7\x1b[0m\n [1]\x1b[0m\n\x1b[31m- 4\x1b[0m\n\x1b[32m+ 3\x1b[0m\n [1]\x1b[0m\n 8\x1b[0m\n", + }, + 'nested_mixed_structures_noOU': { + 'result': " {'one'}\x1b[0m\n [0]\x1b[0m\n {'two'}\x1b[0m\n {'three'}\x1b[0m\n [1]\x1b[0m\n\x1b[32m+ 3\x1b[0m\n", + }, + 'one_item_changed_in_the_middle_of_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_changed_in_the_middle_of_list_noN': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_changed_in_the_middle_of_list_noNO': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_changed_in_the_middle_of_list_noO': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n\x1b[32m+ 9\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_changed_in_the_middle_of_list_noU': { + 'result': ' [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n\x1b[32m+ 9\x1b[0m\n', + }, + 'one_item_inserted_in_the_middle_of_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_inserted_in_the_middle_of_list_noA': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [1]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_inserted_in_the_middle_of_list_noU': { + 'result': '\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'one_item_popped_from_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n', + }, + 'one_item_popped_from_list_noU': { + 'result': '\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n', + }, + 'one_item_pushed_to_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'one_item_pushed_to_list_noU': { + 'result': '\x1b[1;32m+ [1]\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'one_item_removed_from_the_middle_of_list': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_removed_from_the_middle_of_list_noR': { + 'result': ' [0]\x1b[0m\n 0\x1b[0m\n [2]\x1b[0m\n 2\x1b[0m\n', + }, + 'one_item_removed_from_the_middle_of_list_noU': { + 'result': '\x1b[1;31m- [1]\x1b[0m\n\x1b[31m- 1\x1b[0m\n', + }, + 'one_item_shifted_from_list': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n [1]\x1b[0m\n 1\x1b[0m\n', + }, + 'one_item_shifted_from_list_noU': { + 'result': '\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n', + }, + 'one_item_unshifted_to_list': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n [1]\x1b[0m\n 1\x1b[0m\n', + }, + 'one_item_unshifted_to_list_noU': { + 'result': '\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n', + }, + 'one_key_added_to_subhash': { + 'result': " {'one'}\x1b[0m\n\x1b[1;32m+ {'three'}\x1b[0m\n\x1b[32m+ 3\x1b[0m\n {'two'}\x1b[0m\n 2\x1b[0m\n", + }, + 'one_key_added_to_subhash_noU': { + 'result': " {'one'}\x1b[0m\n\x1b[1;32m+ {'three'}\x1b[0m\n\x1b[32m+ 3\x1b[0m\n", + }, + 'one_key_removed_from_subhash': { + 'result': " {'one'}\x1b[0m\n\x1b[1;31m- {'three'}\x1b[0m\n\x1b[31m- 3\x1b[0m\n {'two'}\x1b[0m\n 2\x1b[0m\n", + }, + 'one_key_removed_from_subhash_noU': { + 'result': " {'one'}\x1b[0m\n\x1b[1;31m- {'three'}\x1b[0m\n\x1b[31m- 3\x1b[0m\n", + }, + 'quote_symbols': { + 'result': ' {\'"double"\'}\x1b[0m\n\x1b[31m- \'""\'\x1b[0m\n\x1b[32m+ \'"\'\x1b[0m\n {"\'single\'"}\x1b[0m\n\x1b[31m- "\'\'"\x1b[0m\n\x1b[32m+ "\'"\x1b[0m\n {\'`backticks`\'}\x1b[0m\n\x1b[31m- \'``\'\x1b[0m\n\x1b[32m+ \'`\'\x1b[0m\n', + }, + 'redefined_depth': { + 'result': '\x1b[31m- 0\x1b[0m\n\x1b[32m+ 1\x1b[0m\n', + }, + 'set_extended': { + 'result': '\x1b[34m# \x1b[0m\n 1\x1b[0m\n\x1b[32m+ 2\x1b[0m\n', + }, + 'sets_empty_diff': { + 'result': '', + }, + 'sets_lcs': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[31m- 1\x1b[0m\n 2\x1b[0m\n\x1b[32m+ 3\x1b[0m\n', + }, + 'sets_lcs_noAR': { + 'result': '\x1b[34m# \x1b[0m\n 2\x1b[0m\n', + }, + 'sets_lcs_noU': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[31m- 1\x1b[0m\n\x1b[32m+ 3\x1b[0m\n', + }, + 'sets_lcs_trimR': { + 'result': '\x1b[34m# \x1b[0m\n\x1b[31m- 1\x1b[0m\n 2\x1b[0m\n\x1b[32m+ 3\x1b[0m\n', + }, + 'str_multiline_with_multiline_mode_off': { + 'result': "\x1b[31m- 'A\\nB'\x1b[0m\n\x1b[32m+ 'B\\nC'\x1b[0m\n", + }, + 'str_single_line_on_multiline_mode': { + 'result': "\x1b[31m- 'bar'\x1b[0m\n\x1b[32m+ 'baz'\x1b[0m\n", + }, + 'str_vs_bytes': { + 'result': "\x1b[31m- 'a'\x1b[0m\n\x1b[32m+ b'a'\x1b[0m\n", + }, + 'subhash_emptied': { + 'result': " {'one'}\x1b[0m\n\x1b[1;31m- {'two'}\x1b[0m\n\x1b[31m- 2\x1b[0m\n", + }, + 'subhash_emptied_noR': { + 'result': '', + }, + 'subhash_filled': { + 'result': " {'one'}\x1b[0m\n\x1b[1;32m+ {'two'}\x1b[0m\n\x1b[32m+ 2\x1b[0m\n", + }, + 'subhash_filled_noA': { + 'result': '', + }, + 'sublist_emptied': { + 'result': ' [0]\x1b[0m\n\x1b[1;31m- [0]\x1b[0m\n\x1b[31m- 0\x1b[0m\n', + }, + 'sublist_emptied_noR': { + 'result': '', + }, + 'sublist_filled': { + 'result': ' [0]\x1b[0m\n\x1b[1;32m+ [0]\x1b[0m\n\x1b[32m+ 0\x1b[0m\n', + }, + 'sublist_filled_noA': { + 'result': '', + }, + 'tuple_extended': { + 'result': ' (0)\x1b[0m\n 1\x1b[0m\n\x1b[1;32m+ (1)\x1b[0m\n\x1b[32m+ 2\x1b[0m\n', + }, + 'tuples_lcs': { + 'result': '\x1b[1;32m+ (0)\x1b[0m\n\x1b[32m+ 0\x1b[0m\n (1)\x1b[0m\n 1\x1b[0m\n (2)\x1b[0m\n 2\x1b[0m\n (3)\x1b[0m\n\x1b[31m- 4\x1b[0m\n\x1b[32m+ 3\x1b[0m\n\x1b[1;31m- (4)\x1b[0m\n\x1b[31m- 5\x1b[0m\n', + }, + 'tuples_lcs_noOU': { + 'result': '\x1b[1;32m+ (0)\x1b[0m\n\x1b[32m+ 0\x1b[0m\n (2)\x1b[0m\n\x1b[32m+ 3\x1b[0m\n\x1b[1;31m- (3)\x1b[0m\n\x1b[31m- 5\x1b[0m\n', + }, + 'undef_vs_0': { + 'result': '\x1b[31m- None\x1b[0m\n\x1b[32m+ 0\x1b[0m\n', + }, + 'undef_vs_empty_hash': { + 'result': '\x1b[31m- None\x1b[0m\n\x1b[32m+ {}\x1b[0m\n', + }, + 'undef_vs_empty_hash_noNO': { + 'result': '', + }, + 'undef_vs_empty_list': { + 'result': '\x1b[31m- None\x1b[0m\n\x1b[32m+ []\x1b[0m\n', + }, + 'undef_vs_empty_string': { + 'result': "\x1b[31m- None\x1b[0m\n\x1b[32m+ ''\x1b[0m\n", + }, + 'undef_vs_negative_number': { + 'result': '\x1b[31m- None\x1b[0m\n\x1b[32m+ -1\x1b[0m\n', + }, + 'undef_vs_undef': { + 'result': ' None\x1b[0m\n', + }, + 'wrapping_text': { + 'result': 'Header\x1b[0m\n\x1b[31m- 0\x1b[0m\n\x1b[32m+ 1\x1b[0m\nFooter\x1b[0m\n', + }, +} + + +if __name__ == '__main__': + names = sys.argv[1:] if len(sys.argv) > 1 else sorted(RESULTS.keys()) + headers = len(names) > 1 + + for name in names: + if headers: + print('========== ' + name + ' ==========') + print(RESULTS[name].get('result', None), end='') diff --git a/tests/data/formatters/TextFormatter.py b/tests/data/formatters/TextFormatter.py new file mode 100644 index 0000000..31fbb31 --- /dev/null +++ b/tests/data/formatters/TextFormatter.py @@ -0,0 +1,415 @@ +""" +Autogenerated, do not edit manually! + +""" +import sys + + +RESULTS = { + '0_vs_0': { + 'result': ' 0\n', + }, + '0_vs_0_noU': { + 'result': '', + }, + '0_vs_1': { + 'result': '- 0\n+ 1\n', + }, + '0_vs_empty_string': { + 'result': "- 0\n+ ''\n", + }, + '0_vs_undef': { + 'result': '- 0\n+ None\n', + }, + '1.0_vs_1.0_as_string': { + 'result': "- 1\n+ '1.0'\n", + }, + '1_vs_-1': { + 'result': '- 1\n+ -1\n', + }, + '1_vs_1.0': { + 'result': ' 1\n', + }, + '1_vs_1_as_string': { + 'result': "- 1\n+ '1'\n", + }, + 'a_vs_a': { + 'result': " 'a'\n", + }, + 'a_vs_b': { + 'result': "- 'a'\n+ 'b'\n", + }, + 'absent_emitter': { + 'raises': NotImplementedError, + }, + 'brackets': { + 'result': " {'('}\n- ')'\n+ '('\n {'<'}\n- '>'\n+ '<'\n {'['}\n- ']'\n+ '['\n {'{'}\n- '}'\n+ '{'\n", + }, + 'deeply_nested_hash_vs_empty_hash': { + 'result': "- {'one'}\n- {'two': {'three': 3}}\n", + }, + 'deeply_nested_hash_vs_empty_hash_trimR': { + 'result': "- {'one'}\n- None\n", + }, + 'deeply_nested_list_vs_empty_list': { + 'result': '- [0]\n- [[0, 1]]\n', + }, + 'deeply_nested_list_vs_empty_list_trimR': { + 'result': '- [0]\n- None\n', + }, + 'deeply_nested_subhash_removed_from_hash': { + 'result': " {'four'}\n 4\n- {'one'}\n- {'two': {'three': 3}}\n", + }, + 'deeply_nested_subhash_removed_from_hash_trimR': { + 'result': " {'four'}\n 4\n- {'one'}\n- None\n", + }, + 'deeply_nested_sublist_removed_from_list': { + 'result': ' [0]\n 0\n- [1]\n- [[0, 1]]\n', + }, + 'deeply_nested_sublist_removed_from_list_trimR': { + 'result': ' [0]\n 0\n- [1]\n- None\n', + }, + 'empty_hash_vs_empty_hash': { + 'result': ' {}\n', + }, + 'empty_hash_vs_empty_hash_noU': { + 'result': '', + }, + 'empty_hash_vs_empty_list': { + 'result': '- {}\n+ []\n', + }, + 'empty_hash_vs_hash_with_one_key': { + 'result': "+ {'one'}\n+ 1\n", + }, + 'empty_hash_vs_hash_with_one_key_noA': { + 'result': '', + }, + 'empty_list_vs_deeply_nested_list': { + 'result': '+ [0]\n+ [[0, 1]]\n', + }, + 'empty_list_vs_empty_hash': { + 'result': '- []\n+ {}\n', + }, + 'empty_list_vs_empty_list': { + 'result': ' []\n', + }, + 'empty_list_vs_empty_list_noU': { + 'result': '', + }, + 'empty_list_vs_list_with_one_item': { + 'result': '+ [0]\n+ 0\n', + }, + 'empty_list_vs_list_with_one_item_noA': { + 'result': '', + }, + 'empty_string_vs_0': { + 'result': "- ''\n+ 0\n", + }, + 'empty_string_vs_undef': { + 'result': "- ''\n+ None\n", + }, + 'escaped_symbols': { + 'result': " {'\\n'}\n- '\\r\\n'\n+ '\\n'\n", + }, + 'frozenset_extended': { + 'result': '# \n 1\n+ 2\n', + }, + 'frozensets_lcs': { + 'result': '# \n- 1\n 2\n+ 3\n', + }, + 'hash_with_one_key_vs_empty_hash': { + 'result': "- {'one'}\n- 1\n", + }, + 'hash_with_one_key_vs_empty_hash_noR': { + 'result': '', + }, + 'hashes_with_one_different_value_noN': { + 'result': " {'one'}\n- 1\n", + }, + 'hashes_with_one_different_value_noO': { + 'result': " {'one'}\n+ 2\n", + }, + 'list_with_one_item_vs_empty_list': { + 'result': '- [0]\n- 0\n', + }, + 'list_with_one_item_vs_empty_list_noR': { + 'result': '', + }, + 'lists_LCS_added_items': { + 'result': '+ [0]\n+ 0\n+ [1]\n+ 1\n [2]\n 2\n [3]\n 3\n+ [4]\n+ 4\n [5]\n 5\n+ [6]\n+ 6\n+ [7]\n+ 7\n', + }, + 'lists_LCS_added_items_noU': { + 'result': '+ [0]\n+ 0\n+ [1]\n+ 1\n+ [2]\n+ 4\n+ [3]\n+ 6\n+ [4]\n+ 7\n', + }, + 'lists_LCS_changed_items': { + 'result': ' [0]\n 0\n [1]\n 1\n [2]\n- 2\n+ 9\n [3]\n- 3\n+ 9\n [4]\n 4\n [5]\n- 5\n+ 9\n [6]\n 6\n [7]\n 7\n', + }, + 'lists_LCS_changed_items_noOU': { + 'result': ' [2]\n+ 9\n [3]\n+ 9\n [5]\n+ 9\n', + }, + 'lists_LCS_changed_items_noU': { + 'result': ' [2]\n- 2\n+ 9\n [3]\n- 3\n+ 9\n [5]\n- 5\n+ 9\n', + }, + 'lists_LCS_complex': { + 'result': "- [0]\n- 'a'\n [1]\n 'b'\n [2]\n 'c'\n+ [3]\n+ 'd'\n [4]\n 'e'\n [5]\n- 'h'\n+ 'f'\n [6]\n 'j'\n+ [7]\n+ 'k'\n [8]\n 'l'\n [9]\n 'm'\n [10]\n- 'n'\n+ 'r'\n [11]\n- 'p'\n+ 's'\n+ [12]\n+ 't'\n", + }, + 'lists_LCS_complex_noAU': { + 'result': "- [0]\n- 'a'\n [4]\n- 'h'\n+ 'f'\n [8]\n- 'n'\n+ 'r'\n [9]\n- 'p'\n+ 's'\n", + }, + 'lists_LCS_complex_noRU': { + 'result': "+ [3]\n+ 'd'\n [4]\n- 'h'\n+ 'f'\n+ [6]\n+ 'k'\n [8]\n- 'n'\n+ 'r'\n [9]\n- 'p'\n+ 's'\n+ [10]\n+ 't'\n", + }, + 'lists_LCS_complex_noU': { + 'result': "- [0]\n- 'a'\n+ [3]\n+ 'd'\n [4]\n- 'h'\n+ 'f'\n+ [6]\n+ 'k'\n [8]\n- 'n'\n+ 'r'\n [9]\n- 'p'\n+ 's'\n+ [10]\n+ 't'\n", + }, + 'lists_LCS_complex_onlyU': { + 'result': " [1]\n 'b'\n [2]\n 'c'\n [3]\n 'e'\n [5]\n 'j'\n [6]\n 'l'\n [7]\n 'm'\n", + }, + 'lists_LCS_removed_items': { + 'result': '- [0]\n- 0\n- [1]\n- 1\n [2]\n 2\n [3]\n 3\n- [4]\n- 4\n [5]\n 5\n- [6]\n- 6\n- [7]\n- 7\n', + }, + 'lists_LCS_removed_items_noU': { + 'result': '- [0]\n- 0\n- [1]\n- 1\n- [4]\n- 4\n- [6]\n- 6\n- [7]\n- 7\n', + }, + 'lists_with_one_different_item': { + 'result': ' [0]\n- 0\n+ 1\n', + }, + 'lists_with_one_different_item_noN': { + 'result': ' [0]\n- 0\n', + }, + 'lists_with_one_different_item_noO': { + 'result': ' [0]\n+ 1\n', + }, + 'mixed_specific_structures': { + 'result': ' (0)\n- ()\n+ frozenset()\n (1)\n# \n+ True\n', + }, + 'multiline__empty_vs_multiline': { + 'result': '# \n @@ -1 +1,2 @@\n- \n+ A\n+ B\n', + }, + 'multiline__equal': { + 'result': '', + }, + 'multiline__line_added': { + 'result': '# \n @@ -1,2 +1,3 @@\n+ A\n B\n C\n', + }, + 'multiline__line_changed': { + 'result': '# \n @@ -1,3 +1,3 @@\n A\n- B\n+ b\n C\n', + }, + 'multiline__line_changed_ctx_0': { + 'result': '# \n @@ -2 +2 @@\n- B\n+ b\n', + }, + 'multiline__line_removed': { + 'result': '# \n @@ -1,3 +1,2 @@\n A\n- B\n C\n', + }, + 'multiline__trailing_newlines': { + 'result': '# \n @@ -1,3 +1,3 @@\n A\n- B\n+ b\n \n', + }, + 'multiline__vs_empty': { + 'result': '# \n @@ -1,2 +1 @@\n- A\n- B\n+ \n', + }, + 'nested_hashes': { + 'result': "+ {'four'}\n+ 4\n {'one'}\n 1\n- {'three'}\n- 3\n {'two'}\n {'nine'}\n- 9\n+ 8\n {'ten'}\n 10\n", + }, + 'nested_hashes_noU': { + 'result': "+ {'four'}\n+ 4\n- {'three'}\n- 3\n {'two'}\n {'nine'}\n- 9\n+ 8\n", + }, + 'nested_hashes_with_one_different_value': { + 'result': " {'one'}\n {'two'}\n {'three'}\n- 3\n+ 4\n", + }, + 'nested_hashes_with_one_equal_value': { + 'result': " {'one': {'two': {'three': 3}}}\n", + }, + 'nested_hashes_with_one_equal_value_noU': { + 'result': '', + }, + 'nested_lists': { + 'result': " [0]\n 0\n [1]\n [[100]]\n [2]\n [0]\n 20\n [1]\n- '30'\n+ '31'\n [3]\n- 4\n+ 5\n", + }, + 'nested_lists_noU': { + 'result': " [2]\n [1]\n- '30'\n+ '31'\n [3]\n- 4\n+ 5\n", + }, + 'nested_lists_with_one_different_item': { + 'result': ' [0]\n [0]\n- 0\n+ 1\n', + }, + 'nested_lists_with_one_equal_item': { + 'result': ' [[0]]\n', + }, + 'nested_lists_with_one_equal_item_noU': { + 'result': '', + }, + 'nested_mixed_structures': { + 'result': " {'one'}\n [0]\n {'two'}\n {'three'}\n [0]\n 7\n [1]\n- 4\n+ 3\n [1]\n 8\n", + }, + 'nested_mixed_structures_noOU': { + 'result': " {'one'}\n [0]\n {'two'}\n {'three'}\n [1]\n+ 3\n", + }, + 'one_item_changed_in_the_middle_of_list': { + 'result': ' [0]\n 0\n [1]\n- 1\n+ 9\n [2]\n 2\n', + }, + 'one_item_changed_in_the_middle_of_list_noN': { + 'result': ' [0]\n 0\n [1]\n- 1\n [2]\n 2\n', + }, + 'one_item_changed_in_the_middle_of_list_noNO': { + 'result': ' [0]\n 0\n [2]\n 2\n', + }, + 'one_item_changed_in_the_middle_of_list_noO': { + 'result': ' [0]\n 0\n [1]\n+ 9\n [2]\n 2\n', + }, + 'one_item_changed_in_the_middle_of_list_noU': { + 'result': ' [1]\n- 1\n+ 9\n', + }, + 'one_item_inserted_in_the_middle_of_list': { + 'result': ' [0]\n 0\n+ [1]\n+ 1\n [2]\n 2\n', + }, + 'one_item_inserted_in_the_middle_of_list_noA': { + 'result': ' [0]\n 0\n [1]\n 2\n', + }, + 'one_item_inserted_in_the_middle_of_list_noU': { + 'result': '+ [1]\n+ 1\n', + }, + 'one_item_popped_from_list': { + 'result': ' [0]\n 0\n- [1]\n- 1\n', + }, + 'one_item_popped_from_list_noU': { + 'result': '- [1]\n- 1\n', + }, + 'one_item_pushed_to_list': { + 'result': ' [0]\n 0\n+ [1]\n+ 1\n', + }, + 'one_item_pushed_to_list_noU': { + 'result': '+ [1]\n+ 1\n', + }, + 'one_item_removed_from_the_middle_of_list': { + 'result': ' [0]\n 0\n- [1]\n- 1\n [2]\n 2\n', + }, + 'one_item_removed_from_the_middle_of_list_noR': { + 'result': ' [0]\n 0\n [2]\n 2\n', + }, + 'one_item_removed_from_the_middle_of_list_noU': { + 'result': '- [1]\n- 1\n', + }, + 'one_item_shifted_from_list': { + 'result': '- [0]\n- 0\n [1]\n 1\n', + }, + 'one_item_shifted_from_list_noU': { + 'result': '- [0]\n- 0\n', + }, + 'one_item_unshifted_to_list': { + 'result': '+ [0]\n+ 0\n [1]\n 1\n', + }, + 'one_item_unshifted_to_list_noU': { + 'result': '+ [0]\n+ 0\n', + }, + 'one_key_added_to_subhash': { + 'result': " {'one'}\n+ {'three'}\n+ 3\n {'two'}\n 2\n", + }, + 'one_key_added_to_subhash_noU': { + 'result': " {'one'}\n+ {'three'}\n+ 3\n", + }, + 'one_key_removed_from_subhash': { + 'result': " {'one'}\n- {'three'}\n- 3\n {'two'}\n 2\n", + }, + 'one_key_removed_from_subhash_noU': { + 'result': " {'one'}\n- {'three'}\n- 3\n", + }, + 'quote_symbols': { + 'result': ' {\'"double"\'}\n- \'""\'\n+ \'"\'\n {"\'single\'"}\n- "\'\'"\n+ "\'"\n {\'`backticks`\'}\n- \'``\'\n+ \'`\'\n', + }, + 'redefined_depth': { + 'result': '- 0\n+ 1\n', + }, + 'set_extended': { + 'result': '# \n 1\n+ 2\n', + }, + 'sets_empty_diff': { + 'result': '', + }, + 'sets_lcs': { + 'result': '# \n- 1\n 2\n+ 3\n', + }, + 'sets_lcs_noAR': { + 'result': '# \n 2\n', + }, + 'sets_lcs_noU': { + 'result': '# \n- 1\n+ 3\n', + }, + 'sets_lcs_trimR': { + 'result': '# \n- 1\n 2\n+ 3\n', + }, + 'str_multiline_with_multiline_mode_off': { + 'result': "- 'A\\nB'\n+ 'B\\nC'\n", + }, + 'str_single_line_on_multiline_mode': { + 'result': "- 'bar'\n+ 'baz'\n", + }, + 'str_vs_bytes': { + 'result': "- 'a'\n+ b'a'\n", + }, + 'subhash_emptied': { + 'result': " {'one'}\n- {'two'}\n- 2\n", + }, + 'subhash_emptied_noR': { + 'result': '', + }, + 'subhash_filled': { + 'result': " {'one'}\n+ {'two'}\n+ 2\n", + }, + 'subhash_filled_noA': { + 'result': '', + }, + 'sublist_emptied': { + 'result': ' [0]\n- [0]\n- 0\n', + }, + 'sublist_emptied_noR': { + 'result': '', + }, + 'sublist_filled': { + 'result': ' [0]\n+ [0]\n+ 0\n', + }, + 'sublist_filled_noA': { + 'result': '', + }, + 'tuple_extended': { + 'result': ' (0)\n 1\n+ (1)\n+ 2\n', + }, + 'tuples_lcs': { + 'result': '+ (0)\n+ 0\n (1)\n 1\n (2)\n 2\n (3)\n- 4\n+ 3\n- (4)\n- 5\n', + }, + 'tuples_lcs_noOU': { + 'result': '+ (0)\n+ 0\n (2)\n+ 3\n- (3)\n- 5\n', + }, + 'undef_vs_0': { + 'result': '- None\n+ 0\n', + }, + 'undef_vs_empty_hash': { + 'result': '- None\n+ {}\n', + }, + 'undef_vs_empty_hash_noNO': { + 'result': '', + }, + 'undef_vs_empty_list': { + 'result': '- None\n+ []\n', + }, + 'undef_vs_empty_string': { + 'result': "- None\n+ ''\n", + }, + 'undef_vs_negative_number': { + 'result': '- None\n+ -1\n', + }, + 'undef_vs_undef': { + 'result': ' None\n', + }, + 'wrapping_text': { + 'result': 'Header\n- 0\n+ 1\nFooter\n', + }, +} + + +if __name__ == '__main__': + names = sys.argv[1:] if len(sys.argv) > 1 else sorted(RESULTS.keys()) + headers = len(names) > 1 + + for name in names: + if headers: + print('========== ' + name + ' ==========') + print(RESULTS[name].get('result', None), end='') diff --git a/tests/data/formatters/__init__.py b/tests/data/formatters/__init__.py new file mode 100644 index 0000000..bdade5a --- /dev/null +++ b/tests/data/formatters/__init__.py @@ -0,0 +1,177 @@ +""" +python specific tests + +""" +from tests.data import standard, specific + + +def get_tests(): + tests = {} + tests.update(standard.get_tests()) + tests.update(specific.get_tests()) + + # structures + tests.update({ + 'brackets': { + 'a': {'[': ']', '{': '}', '(': ')', '<': '>'}, + 'b': {'[': '[', '{': '{', '(': '(', '<': '<'}, + 'diff': { + 'D': { + '(': {'N': '(', 'O': ')'}, + '<': {'N': '<', 'O': '>'}, + '[': {'N': '[', 'O': ']'}, + '{': {'N': '{', 'O': '}'}, + }, + }, + }, + 'escaped_symbols': { + 'a': {'\n': '\r\n'}, + 'b': {'\n': '\n'}, + 'diff': {'D': {'\n': {'N': '\n', 'O': '\r\n'}}}, + }, + 'quote_symbols': { + 'a': {'`backticks`': '``', '"double"': '""', "'single'": "''"}, + 'b': {'`backticks`': '`', '"double"': '"', "'single'": "'"}, + 'diff': { + 'D': { + '"double"': {'N': '"', 'O': '""'}, + '`backticks`': {'N': '`', 'O': '``'}, + "'single'": {'N': "'", 'O': "''"}, + }, + }, + 'formatter_opts': {'sort_keys': True}, + }, + 'wrapping_text': { + 'a': 0, + 'b': 1, + 'diff': {'N': 1, 'O': 0}, + 'format_func_opts': { + 'header': 'Header', + 'footer': 'Footer', + }, + }, + 'redefined_depth': { + 'a': 0, + 'b': 1, + 'diff': {'N': 1, 'O': 0}, + 'format_func_opts': {'depth': 3}, + }, + 'absent_emitter': { + 'diff': {'D': [], 'E': None}, + 'formatter_raises': NotImplementedError, + }, + }) + + # multiline strings + tests.update({ + 'multiline__equal': { + 'a': 'A\nB\nC', + 'b': 'A\nB\nC', + 'diff': {}, + 'diff_opts': {'U': False, 'multiline_diff_context': 3}, + }, + 'multiline__empty_vs_multiline': { + 'a': '', + 'b': 'A\nB', + 'diff': { + 'D': [ + {'I': [0, 1, 0, 2]}, + {'R': ''}, + {'A': 'A'}, + {'A': 'B'}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'multiline__vs_empty': { + 'b': '', + 'a': 'A\nB', + 'diff': { + 'D': [ + {'I': [0, 2, 0, 1]}, + {'R': 'A'}, + {'R': 'B'}, + {'A': ''}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'multiline__line_added': { + 'a': 'B\nC', + 'b': 'A\nB\nC', + 'diff': { + 'D': [ + {'I': [0, 2, 0, 3]}, + {'A': 'A'}, + {'U': 'B'}, + {'U': 'C'}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'multiline__line_changed': { + 'a': 'A\nB\nC', + 'b': 'A\nb\nC', + 'diff': { + 'D': [ + {'I': [0, 3, 0, 3]}, + {'U': 'A'}, + {'R': 'B'}, + {'A': 'b'}, + {'U': 'C'}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'multiline__line_changed_ctx_0': { + 'a': 'A\nB\nC', + 'b': 'A\nb\nC', + 'diff': { + 'D': [ + {'I': [1, 2, 1, 2]}, + {'R': 'B'}, + {'A': 'b'}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 0}, + }, + 'multiline__line_removed': { + 'a': 'A\nB\nC', + 'b': 'A\nC', + 'diff': { + 'D': [ + {'I': [0, 3, 0, 2]}, + {'U': 'A'}, + {'R': 'B'}, + {'U': 'C'}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'multiline__trailing_newlines': { + 'a': 'A\nB\n', + 'b': 'A\nb\n', + 'diff': { + 'D': [ + {'I': [0, 3, 0, 3]}, + {'U': 'A'}, + {'R': 'B'}, + {'A': 'b'}, + {'U': ''}, + ], + 'E': '', + }, + 'diff_opts': {'multiline_diff_context': 3}, + }, + }) + + for test in tests.values(): + test.setdefault('formatter_opts', {}).setdefault('sort_keys', True) + + return tests diff --git a/tests/data/gen_standard.py b/tests/data/gen_standard.py new file mode 100755 index 0000000..94e01fa --- /dev/null +++ b/tests/data/gen_standard.py @@ -0,0 +1,59 @@ +#!/usr/bin/env python3 + +import json +import os +import sys + + +DIR_INPUT = sys.argv[1] + +tests = [] +for file_name in sorted(os.listdir(DIR_INPUT)): + with open(os.path.join(DIR_INPUT, file_name)) as f: + data = json.load(f) + + test_name = file_name.replace('.json', '') + + test_opts = {} + if 'opts' in data: + for o in data['opts']: + if o.startswith('no'): + test_opts[o.replace('no', '')] = False + elif o == 'trimR': + test_opts['trimR'] = True + + if 'patched' in data: + patched = "\n 'patched': " + repr(data['patched']) + ',' + else: + patched = '' + + tests.append("""\ + '{name}': {{ + 'a': {a}, + 'b': {b}, + 'diff': {diff}, + 'diff_opts': {diff_opts},{patched} + }},""".format( + name=test_name, + a=repr(data['a']), + b=repr(data['b']), + diff=repr(data['diff']), + diff_opts=repr(test_opts), + patched=patched, + )) + + +print('''""" +Do not edit manually! Generated by {script} from +https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/ + +""" + + +def get_tests(): + return {{ +{tests} + }}'''.format( + script=sys.argv[0], + tests='\n'.join(tests), +)) diff --git a/tests/data/specific.py b/tests/data/specific.py new file mode 100644 index 0000000..19d0cf1 --- /dev/null +++ b/tests/data/specific.py @@ -0,0 +1,87 @@ +def get_tests(): + return { + 'frozenset_extended': { + 'a': frozenset((1,)), + 'b': frozenset((1, 2)), + 'diff': {'D': [{'U': 1}, {'A': 2}], 'E': frozenset()}, + }, + 'frozensets_lcs': { + 'a': frozenset((1, 2)), + 'b': frozenset((2, 3)), + 'diff': {'D': [{'R': 1}, {'U': 2}, {'A': 3}], 'E': frozenset()}, + }, + 'mixed_specific_structures': { + 'a': (tuple(), set()), + 'b': (frozenset(), {True}), + 'diff': {'D': ({'N': frozenset(), 'O': ()}, {'D': [{'A': True}], 'E': set()})}, + }, + 'set_extended': { + 'a': {1}, + 'b': {1, 2}, + 'diff': {'D': [{'U': 1}, {'A': 2}], 'E': set()}, + }, + 'sets_lcs': { + 'a': {1, 2}, + 'b': {2, 3}, + 'diff': {'D': [{'R': 1}, {'U': 2}, {'A': 3}], 'E': set()}, + }, + 'sets_lcs_noAR': { + 'a': {1, 2}, + 'b': {2, 3}, + 'diff': {'D': [{'U': 2}], 'E': set()}, + 'diff_opts': {'A': False, 'R': False}, + 'patched': {1, 2}, + }, + 'sets_lcs_noU': { + 'a': {1, 2}, + 'b': {2, 3}, + 'diff': {'D': [{'R': 1}, {'A': 3}], 'E': set()}, + 'diff_opts': {'U': False}, + }, + 'sets_lcs_trimR': { + 'a': {1, 2}, + 'b': {2, 3}, + 'diff': {'D': [{'R': 1}, {'U': 2}, {'A': 3}], 'E': set()}, + 'diff_opts': {'trimR': True}, + }, + 'sets_empty_diff': { + 'a': set((1,)), + 'b': set((1, 2)), + 'diff': {}, + 'diff_opts': {'A': False, 'U': False}, + 'patched': set((1,)), + }, + 'str_multiline_with_multiline_mode_off': { + 'a': 'A\nB', + 'b': 'B\nC', + 'diff': {'N': 'B\nC', 'O': 'A\nB'}, + 'diff_opts': {'multiline_diff_context': -1}, + }, + 'str_single_line_on_multiline_mode': { + 'a': 'bar', + 'b': 'baz', + 'diff': {'N': 'baz', 'O': 'bar'}, + 'diff_opts': {'multiline_diff_context': 3}, + }, + 'str_vs_bytes': { + 'a': 'a', + 'b': b'a', + 'diff': {'N': b'a', 'O': 'a'}, + }, + 'tuple_extended': { + 'a': (1,), + 'b': (1, 2), + 'diff': {'D': ({'U': 1}, {'A': 2})}, + }, + 'tuples_lcs': { + 'a': (1, 2, 4, 5), + 'b': (0, 1, 2, 3), + 'diff': {'D': ({'A': 0}, {'U': 1}, {'U': 2}, {'N': 3, 'O': 4}, {'R': 5})}, + }, + 'tuples_lcs_noOU': { + 'a': (1, 2, 4, 5), + 'b': (0, 1, 2, 3), + 'diff': {'D': ({'A': 0}, {'I': 2, 'N': 3}, {'R': 5})}, + 'diff_opts': {'O': False, 'U': False}, + }, + } diff --git a/tests/data/standard.py b/tests/data/standard.py new file mode 100644 index 0000000..f5970dc --- /dev/null +++ b/tests/data/standard.py @@ -0,0 +1,646 @@ +""" +Do not edit manually! Generated by tests/data/gen_standard.py from +https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/ + +""" + + +def get_tests(): + return { + '0_vs_0': { + 'a': 0, + 'b': 0, + 'diff': {'U': 0}, + 'diff_opts': {}, + }, + '0_vs_0_noU': { + 'a': 0, + 'b': 0, + 'diff': {}, + 'diff_opts': {'U': False}, + }, + '0_vs_1': { + 'a': 0, + 'b': 1, + 'diff': {'N': 1, 'O': 0}, + 'diff_opts': {}, + }, + '0_vs_empty_string': { + 'a': 0, + 'b': '', + 'diff': {'N': '', 'O': 0}, + 'diff_opts': {}, + }, + '0_vs_undef': { + 'a': 0, + 'b': None, + 'diff': {'N': None, 'O': 0}, + 'diff_opts': {}, + }, + '1.0_vs_1.0_as_string': { + 'a': 1, + 'b': '1.0', + 'diff': {'N': '1.0', 'O': 1}, + 'diff_opts': {}, + }, + '1_vs_-1': { + 'a': 1, + 'b': -1, + 'diff': {'N': -1, 'O': 1}, + 'diff_opts': {}, + }, + '1_vs_1.0': { + 'a': 1, + 'b': 1, + 'diff': {'U': 1}, + 'diff_opts': {}, + }, + '1_vs_1_as_string': { + 'a': 1, + 'b': '1', + 'diff': {'N': '1', 'O': 1}, + 'diff_opts': {}, + }, + 'a_vs_a': { + 'a': 'a', + 'b': 'a', + 'diff': {'U': 'a'}, + 'diff_opts': {}, + }, + 'a_vs_b': { + 'a': 'a', + 'b': 'b', + 'diff': {'N': 'b', 'O': 'a'}, + 'diff_opts': {}, + }, + 'deeply_nested_hash_vs_empty_hash': { + 'a': {'one': {'two': {'three': 3}}}, + 'b': {}, + 'diff': {'D': {'one': {'R': {'two': {'three': 3}}}}}, + 'diff_opts': {}, + }, + 'deeply_nested_hash_vs_empty_hash_trimR': { + 'a': {'one': {'two': {'three': 3}}}, + 'b': {}, + 'diff': {'D': {'one': {'R': None}}}, + 'diff_opts': {'trimR': True}, + }, + 'deeply_nested_list_vs_empty_list': { + 'a': [[[0, 1]]], + 'b': [], + 'diff': {'D': [{'R': [[0, 1]]}]}, + 'diff_opts': {}, + }, + 'deeply_nested_list_vs_empty_list_trimR': { + 'a': [[[0, 1]]], + 'b': [], + 'diff': {'D': [{'R': None}]}, + 'diff_opts': {'trimR': True}, + }, + 'deeply_nested_subhash_removed_from_hash': { + 'a': {'four': 4, 'one': {'two': {'three': 3}}}, + 'b': {'four': 4}, + 'diff': {'D': {'four': {'U': 4}, 'one': {'R': {'two': {'three': 3}}}}}, + 'diff_opts': {}, + }, + 'deeply_nested_subhash_removed_from_hash_trimR': { + 'a': {'four': 4, 'one': {'two': {'three': 3}}}, + 'b': {'four': 4}, + 'diff': {'D': {'four': {'U': 4}, 'one': {'R': None}}}, + 'diff_opts': {'trimR': True}, + }, + 'deeply_nested_sublist_removed_from_list': { + 'a': [0, [[0, 1]]], + 'b': [0], + 'diff': {'D': [{'U': 0}, {'R': [[0, 1]]}]}, + 'diff_opts': {}, + }, + 'deeply_nested_sublist_removed_from_list_trimR': { + 'a': [0, [[0, 1]]], + 'b': [0], + 'diff': {'D': [{'U': 0}, {'R': None}]}, + 'diff_opts': {'trimR': True}, + }, + 'empty_hash_vs_empty_hash': { + 'a': {}, + 'b': {}, + 'diff': {'U': {}}, + 'diff_opts': {}, + }, + 'empty_hash_vs_empty_hash_noU': { + 'a': {}, + 'b': {}, + 'diff': {}, + 'diff_opts': {'U': False}, + }, + 'empty_hash_vs_empty_list': { + 'a': {}, + 'b': [], + 'diff': {'N': [], 'O': {}}, + 'diff_opts': {}, + }, + 'empty_hash_vs_hash_with_one_key': { + 'a': {}, + 'b': {'one': 1}, + 'diff': {'D': {'one': {'A': 1}}}, + 'diff_opts': {}, + }, + 'empty_hash_vs_hash_with_one_key_noA': { + 'a': {}, + 'b': {'one': 1}, + 'diff': {}, + 'diff_opts': {'A': False}, + 'patched': {}, + }, + 'empty_list_vs_deeply_nested_list': { + 'a': [], + 'b': [[[0, 1]]], + 'diff': {'D': [{'A': [[0, 1]]}]}, + 'diff_opts': {}, + }, + 'empty_list_vs_empty_hash': { + 'a': [], + 'b': {}, + 'diff': {'N': {}, 'O': []}, + 'diff_opts': {}, + }, + 'empty_list_vs_empty_list': { + 'a': [], + 'b': [], + 'diff': {'U': []}, + 'diff_opts': {}, + }, + 'empty_list_vs_empty_list_noU': { + 'a': [], + 'b': [], + 'diff': {}, + 'diff_opts': {'U': False}, + }, + 'empty_list_vs_list_with_one_item': { + 'a': [], + 'b': [0], + 'diff': {'D': [{'A': 0}]}, + 'diff_opts': {}, + }, + 'empty_list_vs_list_with_one_item_noA': { + 'a': [], + 'b': [0], + 'diff': {}, + 'diff_opts': {'A': False}, + 'patched': [], + }, + 'empty_string_vs_0': { + 'a': '', + 'b': 0, + 'diff': {'N': 0, 'O': ''}, + 'diff_opts': {}, + }, + 'empty_string_vs_undef': { + 'a': '', + 'b': None, + 'diff': {'N': None, 'O': ''}, + 'diff_opts': {}, + }, + 'hash_with_one_key_vs_empty_hash': { + 'a': {'one': 1}, + 'b': {}, + 'diff': {'D': {'one': {'R': 1}}}, + 'diff_opts': {}, + }, + 'hash_with_one_key_vs_empty_hash_noR': { + 'a': {'one': 1}, + 'b': {}, + 'diff': {}, + 'diff_opts': {'R': False}, + 'patched': {'one': 1}, + }, + 'hashes_with_one_different_value_noN': { + 'a': {'one': 1}, + 'b': {'one': 2}, + 'diff': {'D': {'one': {'O': 1}}}, + 'diff_opts': {'N': False}, + 'patched': {'one': 1}, + }, + 'hashes_with_one_different_value_noO': { + 'a': {'one': 1}, + 'b': {'one': 2}, + 'diff': {'D': {'one': {'N': 2}}}, + 'diff_opts': {'O': False}, + }, + 'list_with_one_item_vs_empty_list': { + 'a': [0], + 'b': [], + 'diff': {'D': [{'R': 0}]}, + 'diff_opts': {}, + }, + 'list_with_one_item_vs_empty_list_noR': { + 'a': [0], + 'b': [], + 'diff': {}, + 'diff_opts': {'R': False}, + 'patched': [0], + }, + 'lists_LCS_added_items': { + 'a': [2, 3, 5], + 'b': [0, 1, 2, 3, 4, 5, 6, 7], + 'diff': {'D': [{'A': 0}, {'A': 1}, {'U': 2}, {'U': 3}, {'A': 4}, {'U': 5}, {'A': 6}, {'A': 7}]}, + 'diff_opts': {}, + }, + 'lists_LCS_added_items_noU': { + 'a': [2, 3, 5], + 'b': [0, 1, 2, 3, 4, 5, 6, 7], + 'diff': {'D': [{'A': 0}, {'A': 1}, {'A': 4, 'I': 2}, {'A': 6, 'I': 3}, {'A': 7}]}, + 'diff_opts': {'U': False}, + }, + 'lists_LCS_changed_items': { + 'a': [0, 1, 2, 3, 4, 5, 6, 7], + 'b': [0, 1, 9, 9, 4, 9, 6, 7], + 'diff': {'D': [{'U': 0}, {'U': 1}, {'N': 9, 'O': 2}, {'N': 9, 'O': 3}, {'U': 4}, {'N': 9, 'O': 5}, {'U': 6}, {'U': 7}]}, + 'diff_opts': {}, + }, + 'lists_LCS_changed_items_noOU': { + 'a': [0, 1, 2, 3, 4, 5, 6, 7], + 'b': [0, 1, 9, 9, 4, 9, 6, 7], + 'diff': {'D': [{'I': 2, 'N': 9}, {'N': 9}, {'I': 5, 'N': 9}]}, + 'diff_opts': {'O': False, 'U': False}, + }, + 'lists_LCS_changed_items_noU': { + 'a': [0, 1, 2, 3, 4, 5, 6, 7], + 'b': [0, 1, 9, 9, 4, 9, 6, 7], + 'diff': {'D': [{'I': 2, 'N': 9, 'O': 2}, {'N': 9, 'O': 3}, {'I': 5, 'N': 9, 'O': 5}]}, + 'diff_opts': {'U': False}, + }, + 'lists_LCS_complex': { + 'a': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + 'b': ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + 'diff': {'D': [{'R': 'a'}, {'U': 'b'}, {'U': 'c'}, {'A': 'd'}, {'U': 'e'}, {'N': 'f', 'O': 'h'}, {'U': 'j'}, {'A': 'k'}, {'U': 'l'}, {'U': 'm'}, {'N': 'r', 'O': 'n'}, {'N': 's', 'O': 'p'}, {'A': 't'}]}, + 'diff_opts': {}, + }, + 'lists_LCS_complex_noAU': { + 'a': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + 'b': ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + 'diff': {'D': [{'R': 'a'}, {'I': 4, 'N': 'f', 'O': 'h'}, {'I': 8, 'N': 'r', 'O': 'n'}, {'N': 's', 'O': 'p'}]}, + 'diff_opts': {'A': False, 'U': False}, + 'patched': ['b', 'c', 'e', 'f', 'j', 'l', 'm', 'r', 's'], + }, + 'lists_LCS_complex_noRU': { + 'a': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + 'b': ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + 'diff': {'D': [{'A': 'd', 'I': 3}, {'I': 4, 'N': 'f', 'O': 'h'}, {'A': 'k', 'I': 6}, {'I': 8, 'N': 'r', 'O': 'n'}, {'N': 's', 'O': 'p'}, {'A': 't'}]}, + 'diff_opts': {'R': False, 'U': False}, + 'patched': ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + }, + 'lists_LCS_complex_noU': { + 'a': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + 'b': ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + 'diff': {'D': [{'R': 'a'}, {'A': 'd', 'I': 3}, {'I': 4, 'N': 'f', 'O': 'h'}, {'A': 'k', 'I': 6}, {'I': 8, 'N': 'r', 'O': 'n'}, {'N': 's', 'O': 'p'}, {'A': 't'}]}, + 'diff_opts': {'U': False}, + }, + 'lists_LCS_complex_onlyU': { + 'a': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + 'b': ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'], + 'diff': {'D': [{'I': 1, 'U': 'b'}, {'U': 'c'}, {'I': 3, 'U': 'e'}, {'I': 5, 'U': 'j'}, {'I': 6, 'U': 'l'}, {'U': 'm'}]}, + 'diff_opts': {'A': False, 'N': False, 'O': False, 'R': False}, + 'patched': ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'], + }, + 'lists_LCS_removed_items': { + 'a': [0, 1, 2, 3, 4, 5, 6, 7], + 'b': [2, 3, 5], + 'diff': {'D': [{'R': 0}, {'R': 1}, {'U': 2}, {'U': 3}, {'R': 4}, {'U': 5}, {'R': 6}, {'R': 7}]}, + 'diff_opts': {}, + }, + 'lists_LCS_removed_items_noU': { + 'a': [0, 1, 2, 3, 4, 5, 6, 7], + 'b': [2, 3, 5], + 'diff': {'D': [{'R': 0}, {'R': 1}, {'I': 4, 'R': 4}, {'I': 6, 'R': 6}, {'R': 7}]}, + 'diff_opts': {'U': False}, + }, + 'lists_with_one_different_item': { + 'a': [0], + 'b': [1], + 'diff': {'D': [{'N': 1, 'O': 0}]}, + 'diff_opts': {}, + }, + 'lists_with_one_different_item_noN': { + 'a': [0], + 'b': [1], + 'diff': {'D': [{'O': 0}]}, + 'diff_opts': {'N': False}, + 'patched': [0], + }, + 'lists_with_one_different_item_noO': { + 'a': [0], + 'b': [1], + 'diff': {'D': [{'N': 1}]}, + 'diff_opts': {'O': False}, + }, + 'nested_hashes': { + 'a': {'one': 1, 'three': 3, 'two': {'nine': 9, 'ten': 10}}, + 'b': {'four': 4, 'one': 1, 'two': {'nine': 8, 'ten': 10}}, + 'diff': {'D': {'four': {'A': 4}, 'one': {'U': 1}, 'three': {'R': 3}, 'two': {'D': {'nine': {'N': 8, 'O': 9}, 'ten': {'U': 10}}}}}, + 'diff_opts': {}, + }, + 'nested_hashes_noU': { + 'a': {'one': 1, 'three': 3, 'two': {'nine': 9, 'ten': 10}}, + 'b': {'four': 4, 'one': 1, 'two': {'nine': 8, 'ten': 10}}, + 'diff': {'D': {'four': {'A': 4}, 'three': {'R': 3}, 'two': {'D': {'nine': {'N': 8, 'O': 9}}}}}, + 'diff_opts': {'U': False}, + }, + 'nested_hashes_with_one_different_value': { + 'a': {'one': {'two': {'three': 3}}}, + 'b': {'one': {'two': {'three': 4}}}, + 'diff': {'D': {'one': {'D': {'two': {'D': {'three': {'N': 4, 'O': 3}}}}}}}, + 'diff_opts': {}, + }, + 'nested_hashes_with_one_equal_value': { + 'a': {'one': {'two': {'three': 3}}}, + 'b': {'one': {'two': {'three': 3}}}, + 'diff': {'U': {'one': {'two': {'three': 3}}}}, + 'diff_opts': {}, + }, + 'nested_hashes_with_one_equal_value_noU': { + 'a': {'one': {'two': {'three': 3}}}, + 'b': {'one': {'two': {'three': 3}}}, + 'diff': {}, + 'diff_opts': {'U': False}, + }, + 'nested_lists': { + 'a': [0, [[100]], [20, '30'], 4], + 'b': [0, [[100]], [20, '31'], 5], + 'diff': {'D': [{'U': 0}, {'U': [[100]]}, {'D': [{'U': 20}, {'N': '31', 'O': '30'}]}, {'N': 5, 'O': 4}]}, + 'diff_opts': {}, + }, + 'nested_lists_noU': { + 'a': [0, [[100]], [20, '30'], 4], + 'b': [0, [[100]], [20, '31'], 5], + 'diff': {'D': [{'D': [{'I': 1, 'N': '31', 'O': '30'}], 'I': 2}, {'N': 5, 'O': 4}]}, + 'diff_opts': {'U': False}, + }, + 'nested_lists_with_one_different_item': { + 'a': [[0]], + 'b': [[1]], + 'diff': {'D': [{'D': [{'N': 1, 'O': 0}]}]}, + 'diff_opts': {}, + }, + 'nested_lists_with_one_equal_item': { + 'a': [[0]], + 'b': [[0]], + 'diff': {'U': [[0]]}, + 'diff_opts': {}, + }, + 'nested_lists_with_one_equal_item_noU': { + 'a': [[0]], + 'b': [[0]], + 'diff': {}, + 'diff_opts': {'U': False}, + }, + 'nested_mixed_structures': { + 'a': {'one': [{'two': {'three': [7, 4]}}, 8]}, + 'b': {'one': [{'two': {'three': [7, 3]}}, 8]}, + 'diff': {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'U': 7}, {'N': 3, 'O': 4}]}}}}}, {'U': 8}]}}}, + 'diff_opts': {}, + }, + 'nested_mixed_structures_noOU': { + 'a': {'one': [{'two': {'three': [7, 4]}}, 8]}, + 'b': {'one': [{'two': {'three': [7, 3]}}, 8]}, + 'diff': {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'I': 1, 'N': 3}]}}}}}]}}}, + 'diff_opts': {'O': False, 'U': False}, + }, + 'one_item_changed_in_the_middle_of_list': { + 'a': [0, 1, 2], + 'b': [0, 9, 2], + 'diff': {'D': [{'U': 0}, {'N': 9, 'O': 1}, {'U': 2}]}, + 'diff_opts': {}, + }, + 'one_item_changed_in_the_middle_of_list_noN': { + 'a': [0, 1, 2], + 'b': [0, 9, 2], + 'diff': {'D': [{'U': 0}, {'O': 1}, {'U': 2}]}, + 'diff_opts': {'N': False}, + 'patched': [0, 1, 2], + }, + 'one_item_changed_in_the_middle_of_list_noNO': { + 'a': [0, 1, 2], + 'b': [0, 9, 2], + 'diff': {'D': [{'U': 0}, {'I': 2, 'U': 2}]}, + 'diff_opts': {'N': False, 'O': False}, + 'patched': [0, 1, 2], + }, + 'one_item_changed_in_the_middle_of_list_noO': { + 'a': [0, 1, 2], + 'b': [0, 9, 2], + 'diff': {'D': [{'U': 0}, {'N': 9}, {'U': 2}]}, + 'diff_opts': {'O': False}, + }, + 'one_item_changed_in_the_middle_of_list_noU': { + 'a': [0, 1, 2], + 'b': [0, 9, 2], + 'diff': {'D': [{'I': 1, 'N': 9, 'O': 1}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_inserted_in_the_middle_of_list': { + 'a': [0, 2], + 'b': [0, 1, 2], + 'diff': {'D': [{'U': 0}, {'A': 1}, {'U': 2}]}, + 'diff_opts': {}, + }, + 'one_item_inserted_in_the_middle_of_list_noA': { + 'a': [0, 2], + 'b': [0, 1, 2], + 'diff': {'D': [{'U': 0}, {'I': 1, 'U': 2}]}, + 'diff_opts': {'A': False}, + 'patched': [0, 2], + }, + 'one_item_inserted_in_the_middle_of_list_noU': { + 'a': [0, 2], + 'b': [0, 1, 2], + 'diff': {'D': [{'A': 1, 'I': 1}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_popped_from_list': { + 'a': [0, 1], + 'b': [0], + 'diff': {'D': [{'U': 0}, {'R': 1}]}, + 'diff_opts': {}, + }, + 'one_item_popped_from_list_noU': { + 'a': [0, 1], + 'b': [0], + 'diff': {'D': [{'I': 1, 'R': 1}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_pushed_to_list': { + 'a': [0], + 'b': [0, 1], + 'diff': {'D': [{'U': 0}, {'A': 1}]}, + 'diff_opts': {}, + }, + 'one_item_pushed_to_list_noU': { + 'a': [0], + 'b': [0, 1], + 'diff': {'D': [{'A': 1, 'I': 1}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_removed_from_the_middle_of_list': { + 'a': [0, 1, 2], + 'b': [0, 2], + 'diff': {'D': [{'U': 0}, {'R': 1}, {'U': 2}]}, + 'diff_opts': {}, + }, + 'one_item_removed_from_the_middle_of_list_noR': { + 'a': [0, 1, 2], + 'b': [0, 2], + 'diff': {'D': [{'U': 0}, {'I': 2, 'U': 2}]}, + 'diff_opts': {'R': False}, + 'patched': [0, 1, 2], + }, + 'one_item_removed_from_the_middle_of_list_noU': { + 'a': [0, 1, 2], + 'b': [0, 2], + 'diff': {'D': [{'I': 1, 'R': 1}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_shifted_from_list': { + 'a': [0, 1], + 'b': [1], + 'diff': {'D': [{'R': 0}, {'U': 1}]}, + 'diff_opts': {}, + }, + 'one_item_shifted_from_list_noU': { + 'a': [0, 1], + 'b': [1], + 'diff': {'D': [{'R': 0}]}, + 'diff_opts': {'U': False}, + }, + 'one_item_unshifted_to_list': { + 'a': [1], + 'b': [0, 1], + 'diff': {'D': [{'A': 0}, {'U': 1}]}, + 'diff_opts': {}, + }, + 'one_item_unshifted_to_list_noU': { + 'a': [1], + 'b': [0, 1], + 'diff': {'D': [{'A': 0}]}, + 'diff_opts': {'U': False}, + }, + 'one_key_added_to_subhash': { + 'a': {'one': {'two': 2}}, + 'b': {'one': {'three': 3, 'two': 2}}, + 'diff': {'D': {'one': {'D': {'three': {'A': 3}, 'two': {'U': 2}}}}}, + 'diff_opts': {}, + }, + 'one_key_added_to_subhash_noU': { + 'a': {'one': {'two': 2}}, + 'b': {'one': {'three': 3, 'two': 2}}, + 'diff': {'D': {'one': {'D': {'three': {'A': 3}}}}}, + 'diff_opts': {'U': False}, + }, + 'one_key_removed_from_subhash': { + 'a': {'one': {'three': 3, 'two': 2}}, + 'b': {'one': {'two': 2}}, + 'diff': {'D': {'one': {'D': {'three': {'R': 3}, 'two': {'U': 2}}}}}, + 'diff_opts': {}, + }, + 'one_key_removed_from_subhash_noU': { + 'a': {'one': {'three': 3, 'two': 2}}, + 'b': {'one': {'two': 2}}, + 'diff': {'D': {'one': {'D': {'three': {'R': 3}}}}}, + 'diff_opts': {'U': False}, + }, + 'subhash_emptied': { + 'a': {'one': {'two': 2}}, + 'b': {'one': {}}, + 'diff': {'D': {'one': {'D': {'two': {'R': 2}}}}}, + 'diff_opts': {}, + }, + 'subhash_emptied_noR': { + 'a': {'one': {'two': 2}}, + 'b': {'one': {}}, + 'diff': {}, + 'diff_opts': {'R': False}, + 'patched': {'one': {'two': 2}}, + }, + 'subhash_filled': { + 'a': {'one': {}}, + 'b': {'one': {'two': 2}}, + 'diff': {'D': {'one': {'D': {'two': {'A': 2}}}}}, + 'diff_opts': {}, + }, + 'subhash_filled_noA': { + 'a': {'one': {}}, + 'b': {'one': {'two': 2}}, + 'diff': {}, + 'diff_opts': {'A': False}, + 'patched': {'one': {}}, + }, + 'sublist_emptied': { + 'a': [[0]], + 'b': [[]], + 'diff': {'D': [{'D': [{'R': 0}]}]}, + 'diff_opts': {}, + }, + 'sublist_emptied_noR': { + 'a': [[0]], + 'b': [[]], + 'diff': {}, + 'diff_opts': {'R': False}, + 'patched': [[0]], + }, + 'sublist_filled': { + 'a': [[]], + 'b': [[0]], + 'diff': {'D': [{'D': [{'A': 0}]}]}, + 'diff_opts': {}, + }, + 'sublist_filled_noA': { + 'a': [[]], + 'b': [[0]], + 'diff': {}, + 'diff_opts': {'A': False}, + 'patched': [[]], + }, + 'undef_vs_0': { + 'a': None, + 'b': 0, + 'diff': {'N': 0, 'O': None}, + 'diff_opts': {}, + }, + 'undef_vs_empty_hash': { + 'a': None, + 'b': {}, + 'diff': {'N': {}, 'O': None}, + 'diff_opts': {}, + }, + 'undef_vs_empty_hash_noNO': { + 'a': None, + 'b': {}, + 'diff': {}, + 'diff_opts': {'N': False, 'O': False}, + 'patched': None, + }, + 'undef_vs_empty_list': { + 'a': None, + 'b': [], + 'diff': {'N': [], 'O': None}, + 'diff_opts': {}, + }, + 'undef_vs_empty_string': { + 'a': None, + 'b': '', + 'diff': {'N': '', 'O': None}, + 'diff_opts': {}, + }, + 'undef_vs_negative_number': { + 'a': None, + 'b': -1, + 'diff': {'N': -1, 'O': None}, + 'diff_opts': {}, + }, + 'undef_vs_undef': { + 'a': None, + 'b': None, + 'diff': {'U': None}, + 'diff_opts': {}, + }, + } diff --git a/tests/ext/test_0_vs_0.py b/tests/ext/test_0_vs_0.py deleted file mode 100644 index f222334..0000000 --- a/tests/ext/test_0_vs_0.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/0_vs_0.json -""" -import nested_diff - - -def test_diff(): - a = 0 - b = 0 - diff = {'U': 0} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': 0} - target = 0 - patched = 0 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_0_vs_0_noU.py b/tests/ext/test_0_vs_0_noU.py deleted file mode 100644 index 3105d94..0000000 --- a/tests/ext/test_0_vs_0_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/0_vs_0_noU.json -""" -import nested_diff - - -def test_diff(): - a = 0 - b = 0 - diff = {} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = 0 - patched = 0 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_0_vs_1.py b/tests/ext/test_0_vs_1.py deleted file mode 100644 index 5def051..0000000 --- a/tests/ext/test_0_vs_1.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/0_vs_1.json -""" -import nested_diff - - -def test_diff(): - a = 0 - b = 1 - diff = {'O': 0, 'N': 1} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 0, 'N': 1} - target = 0 - patched = 1 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_0_vs_empty_string.py b/tests/ext/test_0_vs_empty_string.py deleted file mode 100644 index 8f039f4..0000000 --- a/tests/ext/test_0_vs_empty_string.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/0_vs_empty_string.json -""" -import nested_diff - - -def test_diff(): - a = 0 - b = '' - diff = {'O': 0, 'N': ''} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 0, 'N': ''} - target = 0 - patched = '' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_0_vs_undef.py b/tests/ext/test_0_vs_undef.py deleted file mode 100644 index 6b0a27c..0000000 --- a/tests/ext/test_0_vs_undef.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/0_vs_undef.json -""" -import nested_diff - - -def test_diff(): - a = 0 - b = None - diff = {'O': 0, 'N': None} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 0, 'N': None} - target = 0 - patched = None - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_1_vs_1_as_string.py b/tests/ext/test_1_vs_1_as_string.py deleted file mode 100644 index b02bf1e..0000000 --- a/tests/ext/test_1_vs_1_as_string.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/1_vs_1_as_string.json -""" -import nested_diff - - -def test_diff(): - a = 1 - b = '1' - diff = {'O': 1, 'N': '1'} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 1, 'N': '1'} - target = 1 - patched = '1' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_1_vs_1dot0.py b/tests/ext/test_1_vs_1dot0.py deleted file mode 100644 index b649375..0000000 --- a/tests/ext/test_1_vs_1dot0.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/1_vs_1.0.json -""" -import nested_diff - - -def test_diff(): - a = 1 - b = 1 - diff = {'U': 1} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': 1} - target = 1 - patched = 1 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_1_vs_minus1.py b/tests/ext/test_1_vs_minus1.py deleted file mode 100644 index 94cfc6e..0000000 --- a/tests/ext/test_1_vs_minus1.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/1_vs_-1.json -""" -import nested_diff - - -def test_diff(): - a = 1 - b = -1 - diff = {'O': 1, 'N': -1} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 1, 'N': -1} - target = 1 - patched = -1 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_1dot0_vs_1dot0_as_string.py b/tests/ext/test_1dot0_vs_1dot0_as_string.py deleted file mode 100644 index a496b45..0000000 --- a/tests/ext/test_1dot0_vs_1dot0_as_string.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/1.0_vs_1.0_as_string.json -""" -import nested_diff - - -def test_diff(): - a = 1 - b = '1.0' - diff = {'O': 1, 'N': '1.0'} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 1, 'N': '1.0'} - target = 1 - patched = '1.0' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_a_vs_a.py b/tests/ext/test_a_vs_a.py deleted file mode 100644 index 790148e..0000000 --- a/tests/ext/test_a_vs_a.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/a_vs_a.json -""" -import nested_diff - - -def test_diff(): - a = 'a' - b = 'a' - diff = {'U': 'a'} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': 'a'} - target = 'a' - patched = 'a' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_a_vs_b.py b/tests/ext/test_a_vs_b.py deleted file mode 100644 index a265570..0000000 --- a/tests/ext/test_a_vs_b.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/a_vs_b.json -""" -import nested_diff - - -def test_diff(): - a = 'a' - b = 'b' - diff = {'O': 'a', 'N': 'b'} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': 'a', 'N': 'b'} - target = 'a' - patched = 'b' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_hash_vs_empty_hash.py b/tests/ext/test_deeply_nested_hash_vs_empty_hash.py deleted file mode 100644 index 573a044..0000000 --- a/tests/ext/test_deeply_nested_hash_vs_empty_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_hash_vs_empty_hash.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': {'three': 3}}} - b = {} - diff = {'D': {'one': {'R': {'two': {'three': 3}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'R': {'two': {'three': 3}}}}} - target = {'one': {'two': {'three': 3}}} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_hash_vs_empty_hash_trimR.py b/tests/ext/test_deeply_nested_hash_vs_empty_hash_trimR.py deleted file mode 100644 index 1bb8733..0000000 --- a/tests/ext/test_deeply_nested_hash_vs_empty_hash_trimR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_hash_vs_empty_hash_trimR.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': {'three': 3}}} - b = {} - diff = {'D': {'one': {'R': None}}} - opts = {'trimR': True} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'R': None}}} - target = {'one': {'two': {'three': 3}}} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_list_vs_empty_list.py b/tests/ext/test_deeply_nested_list_vs_empty_list.py deleted file mode 100644 index 307926a..0000000 --- a/tests/ext/test_deeply_nested_list_vs_empty_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_list_vs_empty_list.json -""" -import nested_diff - - -def test_diff(): - a = [[[0, 1]]] - b = [] - diff = {'D': [{'R': [[0, 1]]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': [[0, 1]]}]} - target = [[[0, 1]]] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_list_vs_empty_list_trimR.py b/tests/ext/test_deeply_nested_list_vs_empty_list_trimR.py deleted file mode 100644 index f1cb4db..0000000 --- a/tests/ext/test_deeply_nested_list_vs_empty_list_trimR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_list_vs_empty_list_trimR.json -""" -import nested_diff - - -def test_diff(): - a = [[[0, 1]]] - b = [] - diff = {'D': [{'R': None}]} - opts = {'trimR': True} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': None}]} - target = [[[0, 1]]] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_subhash_removed_from_hash.py b/tests/ext/test_deeply_nested_subhash_removed_from_hash.py deleted file mode 100644 index e55f0b9..0000000 --- a/tests/ext/test_deeply_nested_subhash_removed_from_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_subhash_removed_from_hash.json -""" -import nested_diff - - -def test_diff(): - a = {'four': 4, 'one': {'two': {'three': 3}}} - b = {'four': 4} - diff = {'D': {'four': {'U': 4}, 'one': {'R': {'two': {'three': 3}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'four': {'U': 4}, 'one': {'R': {'two': {'three': 3}}}}} - target = {'four': 4, 'one': {'two': {'three': 3}}} - patched = {'four': 4} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_subhash_removed_from_hash_trimR.py b/tests/ext/test_deeply_nested_subhash_removed_from_hash_trimR.py deleted file mode 100644 index 38bdcb4..0000000 --- a/tests/ext/test_deeply_nested_subhash_removed_from_hash_trimR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_subhash_removed_from_hash_trimR.json -""" -import nested_diff - - -def test_diff(): - a = {'four': 4, 'one': {'two': {'three': 3}}} - b = {'four': 4} - diff = {'D': {'four': {'U': 4}, 'one': {'R': None}}} - opts = {'trimR': True} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'four': {'U': 4}, 'one': {'R': None}}} - target = {'four': 4, 'one': {'two': {'three': 3}}} - patched = {'four': 4} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_sublist_removed_from_list.py b/tests/ext/test_deeply_nested_sublist_removed_from_list.py deleted file mode 100644 index be2d90f..0000000 --- a/tests/ext/test_deeply_nested_sublist_removed_from_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_sublist_removed_from_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, [[0, 1]]] - b = [0] - diff = {'D': [{'U': 0}, {'R': [[0, 1]]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'R': [[0, 1]]}]} - target = [0, [[0, 1]]] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_deeply_nested_sublist_removed_from_list_trimR.py b/tests/ext/test_deeply_nested_sublist_removed_from_list_trimR.py deleted file mode 100644 index a0a5721..0000000 --- a/tests/ext/test_deeply_nested_sublist_removed_from_list_trimR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/deeply_nested_sublist_removed_from_list_trimR.json -""" -import nested_diff - - -def test_diff(): - a = [0, [[0, 1]]] - b = [0] - diff = {'D': [{'U': 0}, {'R': None}]} - opts = {'trimR': True} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'R': None}]} - target = [0, [[0, 1]]] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_hash_vs_empty_hash.py b/tests/ext/test_empty_hash_vs_empty_hash.py deleted file mode 100644 index 16feb54..0000000 --- a/tests/ext/test_empty_hash_vs_empty_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_hash_vs_empty_hash.json -""" -import nested_diff - - -def test_diff(): - a = {} - b = {} - diff = {'U': {}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': {}} - target = {} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_hash_vs_empty_hash_noU.py b/tests/ext/test_empty_hash_vs_empty_hash_noU.py deleted file mode 100644 index 915544b..0000000 --- a/tests/ext/test_empty_hash_vs_empty_hash_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_hash_vs_empty_hash_noU.json -""" -import nested_diff - - -def test_diff(): - a = {} - b = {} - diff = {} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_hash_vs_empty_list.py b/tests/ext/test_empty_hash_vs_empty_list.py deleted file mode 100644 index 41524d0..0000000 --- a/tests/ext/test_empty_hash_vs_empty_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_hash_vs_empty_list.json -""" -import nested_diff - - -def test_diff(): - a = {} - b = [] - diff = {'O': {}, 'N': []} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': {}, 'N': []} - target = {} - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_hash_vs_hash_with_one_key.py b/tests/ext/test_empty_hash_vs_hash_with_one_key.py deleted file mode 100644 index 2d4be0d..0000000 --- a/tests/ext/test_empty_hash_vs_hash_with_one_key.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_hash_vs_hash_with_one_key.json -""" -import nested_diff - - -def test_diff(): - a = {} - b = {'one': 1} - diff = {'D': {'one': {'A': 1}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'A': 1}}} - target = {} - patched = {'one': 1} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_hash_vs_hash_with_one_key_noA.py b/tests/ext/test_empty_hash_vs_hash_with_one_key_noA.py deleted file mode 100644 index 96bbcd7..0000000 --- a/tests/ext/test_empty_hash_vs_hash_with_one_key_noA.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_hash_vs_hash_with_one_key_noA.json -""" -import nested_diff - - -def test_diff(): - a = {} - b = {'one': 1} - diff = {} - opts = {'A': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_deeply_nested_list.py b/tests/ext/test_empty_list_vs_deeply_nested_list.py deleted file mode 100644 index 20f398a..0000000 --- a/tests/ext/test_empty_list_vs_deeply_nested_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_deeply_nested_list.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = [[[0, 1]]] - diff = {'D': [{'A': [[0, 1]]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': [[0, 1]]}]} - target = [] - patched = [[[0, 1]]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_empty_hash.py b/tests/ext/test_empty_list_vs_empty_hash.py deleted file mode 100644 index ceb62fd..0000000 --- a/tests/ext/test_empty_list_vs_empty_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_empty_hash.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = {} - diff = {'O': [], 'N': {}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': [], 'N': {}} - target = [] - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_empty_list.py b/tests/ext/test_empty_list_vs_empty_list.py deleted file mode 100644 index aa7bb0c..0000000 --- a/tests/ext/test_empty_list_vs_empty_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_empty_list.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = [] - diff = {'U': []} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': []} - target = [] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_empty_list_noU.py b/tests/ext/test_empty_list_vs_empty_list_noU.py deleted file mode 100644 index aecd3fe..0000000 --- a/tests/ext/test_empty_list_vs_empty_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_empty_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = [] - diff = {} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_list_with_one_item.py b/tests/ext/test_empty_list_vs_list_with_one_item.py deleted file mode 100644 index 4cae2e6..0000000 --- a/tests/ext/test_empty_list_vs_list_with_one_item.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_list_with_one_item.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = [0] - diff = {'D': [{'A': 0}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 0}]} - target = [] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_list_vs_list_with_one_item_noA.py b/tests/ext/test_empty_list_vs_list_with_one_item_noA.py deleted file mode 100644 index a703632..0000000 --- a/tests/ext/test_empty_list_vs_list_with_one_item_noA.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_list_vs_list_with_one_item_noA.json -""" -import nested_diff - - -def test_diff(): - a = [] - b = [0] - diff = {} - opts = {'A': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_string_vs_0.py b/tests/ext/test_empty_string_vs_0.py deleted file mode 100644 index 54d1bb8..0000000 --- a/tests/ext/test_empty_string_vs_0.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_string_vs_0.json -""" -import nested_diff - - -def test_diff(): - a = '' - b = 0 - diff = {'O': '', 'N': 0} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': '', 'N': 0} - target = '' - patched = 0 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_empty_string_vs_undef.py b/tests/ext/test_empty_string_vs_undef.py deleted file mode 100644 index 877aa7d..0000000 --- a/tests/ext/test_empty_string_vs_undef.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/empty_string_vs_undef.json -""" -import nested_diff - - -def test_diff(): - a = '' - b = None - diff = {'O': '', 'N': None} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': '', 'N': None} - target = '' - patched = None - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_hash_with_one_key_vs_empty_hash.py b/tests/ext/test_hash_with_one_key_vs_empty_hash.py deleted file mode 100644 index f39a0fd..0000000 --- a/tests/ext/test_hash_with_one_key_vs_empty_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/hash_with_one_key_vs_empty_hash.json -""" -import nested_diff - - -def test_diff(): - a = {'one': 1} - b = {} - diff = {'D': {'one': {'R': 1}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'R': 1}}} - target = {'one': 1} - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_hash_with_one_key_vs_empty_hash_noR.py b/tests/ext/test_hash_with_one_key_vs_empty_hash_noR.py deleted file mode 100644 index 3430ae0..0000000 --- a/tests/ext/test_hash_with_one_key_vs_empty_hash_noR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/hash_with_one_key_vs_empty_hash_noR.json -""" -import nested_diff - - -def test_diff(): - a = {'one': 1} - b = {} - diff = {} - opts = {'R': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {'one': 1} - patched = {'one': 1} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_hashes_with_one_different_value_noN.py b/tests/ext/test_hashes_with_one_different_value_noN.py deleted file mode 100644 index 9b8cf8f..0000000 --- a/tests/ext/test_hashes_with_one_different_value_noN.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/hashes_with_one_different_value_noN.json -""" -import nested_diff - - -def test_diff(): - a = {'one': 1} - b = {'one': 2} - diff = {'D': {'one': {'O': 1}}} - opts = {'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'O': 1}}} - target = {'one': 1} - patched = {'one': 1} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_hashes_with_one_different_value_noO.py b/tests/ext/test_hashes_with_one_different_value_noO.py deleted file mode 100644 index e780a3f..0000000 --- a/tests/ext/test_hashes_with_one_different_value_noO.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/hashes_with_one_different_value_noO.json -""" -import nested_diff - - -def test_diff(): - a = {'one': 1} - b = {'one': 2} - diff = {'D': {'one': {'N': 2}}} - opts = {'O': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'N': 2}}} - target = {'one': 1} - patched = {'one': 2} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_list_with_one_item_vs_empty_list.py b/tests/ext/test_list_with_one_item_vs_empty_list.py deleted file mode 100644 index b82b624..0000000 --- a/tests/ext/test_list_with_one_item_vs_empty_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/list_with_one_item_vs_empty_list.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [] - diff = {'D': [{'R': 0}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 0}]} - target = [0] - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_list_with_one_item_vs_empty_list_noR.py b/tests/ext/test_list_with_one_item_vs_empty_list_noR.py deleted file mode 100644 index fa60df5..0000000 --- a/tests/ext/test_list_with_one_item_vs_empty_list_noR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/list_with_one_item_vs_empty_list_noR.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [] - diff = {} - opts = {'R': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [0] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_added_items.py b/tests/ext/test_lists_LCS_added_items.py deleted file mode 100644 index da71aa1..0000000 --- a/tests/ext/test_lists_LCS_added_items.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_added_items.json -""" -import nested_diff - - -def test_diff(): - a = [2, 3, 5] - b = [0, 1, 2, 3, 4, 5, 6, 7] - diff = {'D': [{'A': 0}, {'A': 1}, {'U': 2}, {'U': 3}, {'A': 4}, {'U': 5}, {'A': 6}, {'A': 7}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 0}, {'A': 1}, {'U': 2}, {'U': 3}, {'A': 4}, {'U': 5}, {'A': 6}, {'A': 7}]} - target = [2, 3, 5] - patched = [0, 1, 2, 3, 4, 5, 6, 7] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_added_items_noU.py b/tests/ext/test_lists_LCS_added_items_noU.py deleted file mode 100644 index 0cdc1be..0000000 --- a/tests/ext/test_lists_LCS_added_items_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_added_items_noU.json -""" -import nested_diff - - -def test_diff(): - a = [2, 3, 5] - b = [0, 1, 2, 3, 4, 5, 6, 7] - diff = {'D': [{'A': 0}, {'A': 1}, {'A': 4, 'I': 2}, {'A': 6, 'I': 3}, {'A': 7}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 0}, {'A': 1}, {'A': 4, 'I': 2}, {'A': 6, 'I': 3}, {'A': 7}]} - target = [2, 3, 5] - patched = [0, 1, 2, 3, 4, 5, 6, 7] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_changed_items.py b/tests/ext/test_lists_LCS_changed_items.py deleted file mode 100644 index 11ae5c2..0000000 --- a/tests/ext/test_lists_LCS_changed_items.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_changed_items.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2, 3, 4, 5, 6, 7] - b = [0, 1, 9, 9, 4, 9, 6, 7] - diff = {'D': [{'U': 0}, {'U': 1}, {'O': 2, 'N': 9}, {'O': 3, 'N': 9}, {'U': 4}, {'O': 5, 'N': 9}, {'U': 6}, {'U': 7}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'U': 1}, {'O': 2, 'N': 9}, {'O': 3, 'N': 9}, {'U': 4}, {'O': 5, 'N': 9}, {'U': 6}, {'U': 7}]} - target = [0, 1, 2, 3, 4, 5, 6, 7] - patched = [0, 1, 9, 9, 4, 9, 6, 7] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_changed_items_noOU.py b/tests/ext/test_lists_LCS_changed_items_noOU.py deleted file mode 100644 index b26e64f..0000000 --- a/tests/ext/test_lists_LCS_changed_items_noOU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_changed_items_noOU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2, 3, 4, 5, 6, 7] - b = [0, 1, 9, 9, 4, 9, 6, 7] - diff = {'D': [{'I': 2, 'N': 9}, {'N': 9}, {'I': 5, 'N': 9}]} - opts = {'O': False, 'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'I': 2, 'N': 9}, {'N': 9}, {'I': 5, 'N': 9}]} - target = [0, 1, 2, 3, 4, 5, 6, 7] - patched = [0, 1, 9, 9, 4, 9, 6, 7] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_changed_items_noU.py b/tests/ext/test_lists_LCS_changed_items_noU.py deleted file mode 100644 index f5c8c87..0000000 --- a/tests/ext/test_lists_LCS_changed_items_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_changed_items_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2, 3, 4, 5, 6, 7] - b = [0, 1, 9, 9, 4, 9, 6, 7] - diff = {'D': [{'O': 2, 'I': 2, 'N': 9}, {'O': 3, 'N': 9}, {'O': 5, 'I': 5, 'N': 9}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'O': 2, 'I': 2, 'N': 9}, {'O': 3, 'N': 9}, {'O': 5, 'I': 5, 'N': 9}]} - target = [0, 1, 2, 3, 4, 5, 6, 7] - patched = [0, 1, 9, 9, 4, 9, 6, 7] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_complex.py b/tests/ext/test_lists_LCS_complex.py deleted file mode 100644 index 809f4bd..0000000 --- a/tests/ext/test_lists_LCS_complex.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_complex.json -""" -import nested_diff - - -def test_diff(): - a = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - b = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - diff = {'D': [{'R': 'a'}, {'U': 'b'}, {'U': 'c'}, {'A': 'd'}, {'U': 'e'}, {'O': 'h', 'N': 'f'}, {'U': 'j'}, {'A': 'k'}, {'U': 'l'}, {'U': 'm'}, {'O': 'n', 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 'a'}, {'U': 'b'}, {'U': 'c'}, {'A': 'd'}, {'U': 'e'}, {'O': 'h', 'N': 'f'}, {'U': 'j'}, {'A': 'k'}, {'U': 'l'}, {'U': 'm'}, {'O': 'n', 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - target = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - patched = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_complex_noAU.py b/tests/ext/test_lists_LCS_complex_noAU.py deleted file mode 100644 index e25007b..0000000 --- a/tests/ext/test_lists_LCS_complex_noAU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_complex_noAU.json -""" -import nested_diff - - -def test_diff(): - a = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - b = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - diff = {'D': [{'R': 'a'}, {'O': 'h', 'I': 4, 'N': 'f'}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}]} - opts = {'A': False, 'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 'a'}, {'O': 'h', 'I': 4, 'N': 'f'}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}]} - target = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - patched = ['b', 'c', 'e', 'f', 'j', 'l', 'm', 'r', 's'] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_complex_noRU.py b/tests/ext/test_lists_LCS_complex_noRU.py deleted file mode 100644 index 5da34a8..0000000 --- a/tests/ext/test_lists_LCS_complex_noRU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_complex_noRU.json -""" -import nested_diff - - -def test_diff(): - a = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - b = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - diff = {'D': [{'A': 'd', 'I': 3}, {'O': 'h', 'I': 4, 'N': 'f'}, {'A': 'k', 'I': 6}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - opts = {'R': False, 'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 'd', 'I': 3}, {'O': 'h', 'I': 4, 'N': 'f'}, {'A': 'k', 'I': 6}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - target = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - patched = ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_complex_noU.py b/tests/ext/test_lists_LCS_complex_noU.py deleted file mode 100644 index f5179ed..0000000 --- a/tests/ext/test_lists_LCS_complex_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_complex_noU.json -""" -import nested_diff - - -def test_diff(): - a = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - b = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - diff = {'D': [{'R': 'a'}, {'A': 'd', 'I': 3}, {'O': 'h', 'I': 4, 'N': 'f'}, {'A': 'k', 'I': 6}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 'a'}, {'A': 'd', 'I': 3}, {'O': 'h', 'I': 4, 'N': 'f'}, {'A': 'k', 'I': 6}, {'O': 'n', 'I': 8, 'N': 'r'}, {'O': 'p', 'N': 's'}, {'A': 't'}]} - target = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - patched = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_complex_onlyU.py b/tests/ext/test_lists_LCS_complex_onlyU.py deleted file mode 100644 index 47285c4..0000000 --- a/tests/ext/test_lists_LCS_complex_onlyU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_complex_onlyU.json -""" -import nested_diff - - -def test_diff(): - a = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - b = ['b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'm', 'r', 's', 't'] - diff = {'D': [{'I': 1, 'U': 'b'}, {'U': 'c'}, {'I': 3, 'U': 'e'}, {'I': 5, 'U': 'j'}, {'I': 6, 'U': 'l'}, {'U': 'm'}]} - opts = {'O': False, 'A': False, 'R': False, 'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'I': 1, 'U': 'b'}, {'U': 'c'}, {'I': 3, 'U': 'e'}, {'I': 5, 'U': 'j'}, {'I': 6, 'U': 'l'}, {'U': 'm'}]} - target = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - patched = ['a', 'b', 'c', 'e', 'h', 'j', 'l', 'm', 'n', 'p'] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_removed_items.py b/tests/ext/test_lists_LCS_removed_items.py deleted file mode 100644 index 4f878be..0000000 --- a/tests/ext/test_lists_LCS_removed_items.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_removed_items.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2, 3, 4, 5, 6, 7] - b = [2, 3, 5] - diff = {'D': [{'R': 0}, {'R': 1}, {'U': 2}, {'U': 3}, {'R': 4}, {'U': 5}, {'R': 6}, {'R': 7}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 0}, {'R': 1}, {'U': 2}, {'U': 3}, {'R': 4}, {'U': 5}, {'R': 6}, {'R': 7}]} - target = [0, 1, 2, 3, 4, 5, 6, 7] - patched = [2, 3, 5] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_LCS_removed_items_noU.py b/tests/ext/test_lists_LCS_removed_items_noU.py deleted file mode 100644 index 36c2c6c..0000000 --- a/tests/ext/test_lists_LCS_removed_items_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_LCS_removed_items_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2, 3, 4, 5, 6, 7] - b = [2, 3, 5] - diff = {'D': [{'R': 0}, {'R': 1}, {'I': 4, 'R': 4}, {'I': 6, 'R': 6}, {'R': 7}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 0}, {'R': 1}, {'I': 4, 'R': 4}, {'I': 6, 'R': 6}, {'R': 7}]} - target = [0, 1, 2, 3, 4, 5, 6, 7] - patched = [2, 3, 5] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_with_one_different_item.py b/tests/ext/test_lists_with_one_different_item.py deleted file mode 100644 index 81a446a..0000000 --- a/tests/ext/test_lists_with_one_different_item.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_with_one_different_item.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [1] - diff = {'D': [{'O': 0, 'N': 1}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'O': 0, 'N': 1}]} - target = [0] - patched = [1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_with_one_different_item_noN.py b/tests/ext/test_lists_with_one_different_item_noN.py deleted file mode 100644 index 5410d12..0000000 --- a/tests/ext/test_lists_with_one_different_item_noN.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_with_one_different_item_noN.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [1] - diff = {'D': [{'O': 0}]} - opts = {'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'O': 0}]} - target = [0] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_lists_with_one_different_item_noO.py b/tests/ext/test_lists_with_one_different_item_noO.py deleted file mode 100644 index 340c787..0000000 --- a/tests/ext/test_lists_with_one_different_item_noO.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/lists_with_one_different_item_noO.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [1] - diff = {'D': [{'N': 1}]} - opts = {'O': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'N': 1}]} - target = [0] - patched = [1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_hashes.py b/tests/ext/test_nested_hashes.py deleted file mode 100644 index 68cb207..0000000 --- a/tests/ext/test_nested_hashes.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_hashes.json -""" -import nested_diff - - -def test_diff(): - a = {'three': 3, 'one': 1, 'two': {'ten': 10, 'nine': 9}} - b = {'four': 4, 'one': 1, 'two': {'ten': 10, 'nine': 8}} - diff = {'D': {'four': {'A': 4}, 'three': {'R': 3}, 'one': {'U': 1}, 'two': {'D': {'ten': {'U': 10}, 'nine': {'O': 9, 'N': 8}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'four': {'A': 4}, 'three': {'R': 3}, 'one': {'U': 1}, 'two': {'D': {'ten': {'U': 10}, 'nine': {'O': 9, 'N': 8}}}}} - target = {'three': 3, 'one': 1, 'two': {'ten': 10, 'nine': 9}} - patched = {'four': 4, 'one': 1, 'two': {'ten': 10, 'nine': 8}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_hashes_noU.py b/tests/ext/test_nested_hashes_noU.py deleted file mode 100644 index 3f207f9..0000000 --- a/tests/ext/test_nested_hashes_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_hashes_noU.json -""" -import nested_diff - - -def test_diff(): - a = {'three': 3, 'one': 1, 'two': {'ten': 10, 'nine': 9}} - b = {'four': 4, 'one': 1, 'two': {'ten': 10, 'nine': 8}} - diff = {'D': {'four': {'A': 4}, 'three': {'R': 3}, 'two': {'D': {'nine': {'O': 9, 'N': 8}}}}} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'four': {'A': 4}, 'three': {'R': 3}, 'two': {'D': {'nine': {'O': 9, 'N': 8}}}}} - target = {'three': 3, 'one': 1, 'two': {'ten': 10, 'nine': 9}} - patched = {'four': 4, 'one': 1, 'two': {'ten': 10, 'nine': 8}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_hashes_with_one_different_value.py b/tests/ext/test_nested_hashes_with_one_different_value.py deleted file mode 100644 index 19fb4f0..0000000 --- a/tests/ext/test_nested_hashes_with_one_different_value.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_hashes_with_one_different_value.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': {'three': 3}}} - b = {'one': {'two': {'three': 4}}} - diff = {'D': {'one': {'D': {'two': {'D': {'three': {'O': 3, 'N': 4}}}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'two': {'D': {'three': {'O': 3, 'N': 4}}}}}}} - target = {'one': {'two': {'three': 3}}} - patched = {'one': {'two': {'three': 4}}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_hashes_with_one_equal_value.py b/tests/ext/test_nested_hashes_with_one_equal_value.py deleted file mode 100644 index 361779f..0000000 --- a/tests/ext/test_nested_hashes_with_one_equal_value.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_hashes_with_one_equal_value.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': {'three': 3}}} - b = {'one': {'two': {'three': 3}}} - diff = {'U': {'one': {'two': {'three': 3}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': {'one': {'two': {'three': 3}}}} - target = {'one': {'two': {'three': 3}}} - patched = {'one': {'two': {'three': 3}}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_hashes_with_one_equal_value_noU.py b/tests/ext/test_nested_hashes_with_one_equal_value_noU.py deleted file mode 100644 index 359468c..0000000 --- a/tests/ext/test_nested_hashes_with_one_equal_value_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_hashes_with_one_equal_value_noU.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': {'three': 3}}} - b = {'one': {'two': {'three': 3}}} - diff = {} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {'one': {'two': {'three': 3}}} - patched = {'one': {'two': {'three': 3}}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_lists.py b/tests/ext/test_nested_lists.py deleted file mode 100644 index a1fe5dd..0000000 --- a/tests/ext/test_nested_lists.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_lists.json -""" -import nested_diff - - -def test_diff(): - a = [0, [[100]], [20, '30'], 4] - b = [0, [[100]], [20, '31'], 5] - diff = {'D': [{'U': 0}, {'U': [[100]]}, {'D': [{'U': 20}, {'O': '30', 'N': '31'}]}, {'O': 4, 'N': 5}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'U': [[100]]}, {'D': [{'U': 20}, {'O': '30', 'N': '31'}]}, {'O': 4, 'N': 5}]} - target = [0, [[100]], [20, '30'], 4] - patched = [0, [[100]], [20, '31'], 5] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_lists_noU.py b/tests/ext/test_nested_lists_noU.py deleted file mode 100644 index 48406c4..0000000 --- a/tests/ext/test_nested_lists_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_lists_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, [[100]], [20, '30'], 4] - b = [0, [[100]], [20, '31'], 5] - diff = {'D': [{'I': 2, 'D': [{'O': '30', 'I': 1, 'N': '31'}]}, {'O': 4, 'N': 5}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'I': 2, 'D': [{'O': '30', 'I': 1, 'N': '31'}]}, {'O': 4, 'N': 5}]} - target = [0, [[100]], [20, '30'], 4] - patched = [0, [[100]], [20, '31'], 5] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_lists_with_one_different_item.py b/tests/ext/test_nested_lists_with_one_different_item.py deleted file mode 100644 index 00c8ecc..0000000 --- a/tests/ext/test_nested_lists_with_one_different_item.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_lists_with_one_different_item.json -""" -import nested_diff - - -def test_diff(): - a = [[0]] - b = [[1]] - diff = {'D': [{'D': [{'O': 0, 'N': 1}]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'D': [{'O': 0, 'N': 1}]}]} - target = [[0]] - patched = [[1]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_lists_with_one_equal_item.py b/tests/ext/test_nested_lists_with_one_equal_item.py deleted file mode 100644 index da0cb54..0000000 --- a/tests/ext/test_nested_lists_with_one_equal_item.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_lists_with_one_equal_item.json -""" -import nested_diff - - -def test_diff(): - a = [[0]] - b = [[0]] - diff = {'U': [[0]]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': [[0]]} - target = [[0]] - patched = [[0]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_lists_with_one_equal_item_noU.py b/tests/ext/test_nested_lists_with_one_equal_item_noU.py deleted file mode 100644 index 3720dfd..0000000 --- a/tests/ext/test_nested_lists_with_one_equal_item_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_lists_with_one_equal_item_noU.json -""" -import nested_diff - - -def test_diff(): - a = [[0]] - b = [[0]] - diff = {} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [[0]] - patched = [[0]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_mixed_structures.py b/tests/ext/test_nested_mixed_structures.py deleted file mode 100644 index 97ef8e7..0000000 --- a/tests/ext/test_nested_mixed_structures.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_mixed_structures.json -""" -import nested_diff - - -def test_diff(): - a = {'one': [{'two': {'three': [7, 4]}}, 8]} - b = {'one': [{'two': {'three': [7, 3]}}, 8]} - diff = {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'U': 7}, {'O': 4, 'N': 3}]}}}}}, {'U': 8}]}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'U': 7}, {'O': 4, 'N': 3}]}}}}}, {'U': 8}]}}} - target = {'one': [{'two': {'three': [7, 4]}}, 8]} - patched = {'one': [{'two': {'three': [7, 3]}}, 8]} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_nested_mixed_structures_noOU.py b/tests/ext/test_nested_mixed_structures_noOU.py deleted file mode 100644 index f6469bd..0000000 --- a/tests/ext/test_nested_mixed_structures_noOU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/nested_mixed_structures_noOU.json -""" -import nested_diff - - -def test_diff(): - a = {'one': [{'two': {'three': [7, 4]}}, 8]} - b = {'one': [{'two': {'three': [7, 3]}}, 8]} - diff = {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'I': 1, 'N': 3}]}}}}}]}}} - opts = {'O': False, 'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': [{'D': {'two': {'D': {'three': {'D': [{'I': 1, 'N': 3}]}}}}}]}}} - target = {'one': [{'two': {'three': [7, 4]}}, 8]} - patched = {'one': [{'two': {'three': [7, 3]}}, 8]} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_changed_in_the_middle_of_list.py b/tests/ext/test_one_item_changed_in_the_middle_of_list.py deleted file mode 100644 index 56b0951..0000000 --- a/tests/ext/test_one_item_changed_in_the_middle_of_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_changed_in_the_middle_of_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 9, 2] - diff = {'D': [{'U': 0}, {'O': 1, 'N': 9}, {'U': 2}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'O': 1, 'N': 9}, {'U': 2}]} - target = [0, 1, 2] - patched = [0, 9, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_changed_in_the_middle_of_list_noN.py b/tests/ext/test_one_item_changed_in_the_middle_of_list_noN.py deleted file mode 100644 index d0ecbff..0000000 --- a/tests/ext/test_one_item_changed_in_the_middle_of_list_noN.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_changed_in_the_middle_of_list_noN.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 9, 2] - diff = {'D': [{'U': 0}, {'O': 1}, {'U': 2}]} - opts = {'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'O': 1}, {'U': 2}]} - target = [0, 1, 2] - patched = [0, 1, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_changed_in_the_middle_of_list_noNO.py b/tests/ext/test_one_item_changed_in_the_middle_of_list_noNO.py deleted file mode 100644 index 5e85ac2..0000000 --- a/tests/ext/test_one_item_changed_in_the_middle_of_list_noNO.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_changed_in_the_middle_of_list_noNO.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 9, 2] - diff = {'D': [{'U': 0}, {'I': 2, 'U': 2}]} - opts = {'O': False, 'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'I': 2, 'U': 2}]} - target = [0, 1, 2] - patched = [0, 1, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_changed_in_the_middle_of_list_noO.py b/tests/ext/test_one_item_changed_in_the_middle_of_list_noO.py deleted file mode 100644 index efda9b4..0000000 --- a/tests/ext/test_one_item_changed_in_the_middle_of_list_noO.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_changed_in_the_middle_of_list_noO.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 9, 2] - diff = {'D': [{'U': 0}, {'N': 9}, {'U': 2}]} - opts = {'O': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'N': 9}, {'U': 2}]} - target = [0, 1, 2] - patched = [0, 9, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_changed_in_the_middle_of_list_noU.py b/tests/ext/test_one_item_changed_in_the_middle_of_list_noU.py deleted file mode 100644 index 89aa143..0000000 --- a/tests/ext/test_one_item_changed_in_the_middle_of_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_changed_in_the_middle_of_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 9, 2] - diff = {'D': [{'O': 1, 'I': 1, 'N': 9}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'O': 1, 'I': 1, 'N': 9}]} - target = [0, 1, 2] - patched = [0, 9, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_inserted_in_the_middle_of_list.py b/tests/ext/test_one_item_inserted_in_the_middle_of_list.py deleted file mode 100644 index cdd795a..0000000 --- a/tests/ext/test_one_item_inserted_in_the_middle_of_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_inserted_in_the_middle_of_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, 2] - b = [0, 1, 2] - diff = {'D': [{'U': 0}, {'A': 1}, {'U': 2}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'A': 1}, {'U': 2}]} - target = [0, 2] - patched = [0, 1, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_inserted_in_the_middle_of_list_noA.py b/tests/ext/test_one_item_inserted_in_the_middle_of_list_noA.py deleted file mode 100644 index 4fb4615..0000000 --- a/tests/ext/test_one_item_inserted_in_the_middle_of_list_noA.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_inserted_in_the_middle_of_list_noA.json -""" -import nested_diff - - -def test_diff(): - a = [0, 2] - b = [0, 1, 2] - diff = {'D': [{'U': 0}, {'I': 1, 'U': 2}]} - opts = {'A': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'I': 1, 'U': 2}]} - target = [0, 2] - patched = [0, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_inserted_in_the_middle_of_list_noU.py b/tests/ext/test_one_item_inserted_in_the_middle_of_list_noU.py deleted file mode 100644 index b7611c9..0000000 --- a/tests/ext/test_one_item_inserted_in_the_middle_of_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_inserted_in_the_middle_of_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 2] - b = [0, 1, 2] - diff = {'D': [{'A': 1, 'I': 1}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 1, 'I': 1}]} - target = [0, 2] - patched = [0, 1, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_popped_from_list.py b/tests/ext/test_one_item_popped_from_list.py deleted file mode 100644 index 4ded072..0000000 --- a/tests/ext/test_one_item_popped_from_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_popped_from_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1] - b = [0] - diff = {'D': [{'U': 0}, {'R': 1}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'R': 1}]} - target = [0, 1] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_popped_from_list_noU.py b/tests/ext/test_one_item_popped_from_list_noU.py deleted file mode 100644 index 1e9ea77..0000000 --- a/tests/ext/test_one_item_popped_from_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_popped_from_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1] - b = [0] - diff = {'D': [{'I': 1, 'R': 1}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'I': 1, 'R': 1}]} - target = [0, 1] - patched = [0] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_pushed_to_list.py b/tests/ext/test_one_item_pushed_to_list.py deleted file mode 100644 index 46591a6..0000000 --- a/tests/ext/test_one_item_pushed_to_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_pushed_to_list.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [0, 1] - diff = {'D': [{'U': 0}, {'A': 1}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'A': 1}]} - target = [0] - patched = [0, 1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_pushed_to_list_noU.py b/tests/ext/test_one_item_pushed_to_list_noU.py deleted file mode 100644 index 7ff0139..0000000 --- a/tests/ext/test_one_item_pushed_to_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_pushed_to_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0] - b = [0, 1] - diff = {'D': [{'A': 1, 'I': 1}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 1, 'I': 1}]} - target = [0] - patched = [0, 1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_removed_from_the_middle_of_list.py b/tests/ext/test_one_item_removed_from_the_middle_of_list.py deleted file mode 100644 index eb5d70a..0000000 --- a/tests/ext/test_one_item_removed_from_the_middle_of_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_removed_from_the_middle_of_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 2] - diff = {'D': [{'U': 0}, {'R': 1}, {'U': 2}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'R': 1}, {'U': 2}]} - target = [0, 1, 2] - patched = [0, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_removed_from_the_middle_of_list_noR.py b/tests/ext/test_one_item_removed_from_the_middle_of_list_noR.py deleted file mode 100644 index f9950c9..0000000 --- a/tests/ext/test_one_item_removed_from_the_middle_of_list_noR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_removed_from_the_middle_of_list_noR.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 2] - diff = {'D': [{'U': 0}, {'I': 2, 'U': 2}]} - opts = {'R': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'U': 0}, {'I': 2, 'U': 2}]} - target = [0, 1, 2] - patched = [0, 1, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_removed_from_the_middle_of_list_noU.py b/tests/ext/test_one_item_removed_from_the_middle_of_list_noU.py deleted file mode 100644 index a5a53e7..0000000 --- a/tests/ext/test_one_item_removed_from_the_middle_of_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_removed_from_the_middle_of_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1, 2] - b = [0, 2] - diff = {'D': [{'I': 1, 'R': 1}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'I': 1, 'R': 1}]} - target = [0, 1, 2] - patched = [0, 2] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_shifted_from_list.py b/tests/ext/test_one_item_shifted_from_list.py deleted file mode 100644 index 854fc16..0000000 --- a/tests/ext/test_one_item_shifted_from_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_shifted_from_list.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1] - b = [1] - diff = {'D': [{'R': 0}, {'U': 1}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 0}, {'U': 1}]} - target = [0, 1] - patched = [1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_shifted_from_list_noU.py b/tests/ext/test_one_item_shifted_from_list_noU.py deleted file mode 100644 index 26ba601..0000000 --- a/tests/ext/test_one_item_shifted_from_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_shifted_from_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [0, 1] - b = [1] - diff = {'D': [{'R': 0}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'R': 0}]} - target = [0, 1] - patched = [1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_unshifted_to_list.py b/tests/ext/test_one_item_unshifted_to_list.py deleted file mode 100644 index 019030a..0000000 --- a/tests/ext/test_one_item_unshifted_to_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_unshifted_to_list.json -""" -import nested_diff - - -def test_diff(): - a = [1] - b = [0, 1] - diff = {'D': [{'A': 0}, {'U': 1}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 0}, {'U': 1}]} - target = [1] - patched = [0, 1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_item_unshifted_to_list_noU.py b/tests/ext/test_one_item_unshifted_to_list_noU.py deleted file mode 100644 index 5082b70..0000000 --- a/tests/ext/test_one_item_unshifted_to_list_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_item_unshifted_to_list_noU.json -""" -import nested_diff - - -def test_diff(): - a = [1] - b = [0, 1] - diff = {'D': [{'A': 0}]} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'A': 0}]} - target = [1] - patched = [0, 1] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_key_added_to_subhash.py b/tests/ext/test_one_key_added_to_subhash.py deleted file mode 100644 index 4218f26..0000000 --- a/tests/ext/test_one_key_added_to_subhash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_key_added_to_subhash.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': 2}} - b = {'one': {'three': 3, 'two': 2}} - diff = {'D': {'one': {'D': {'three': {'A': 3}, 'two': {'U': 2}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'three': {'A': 3}, 'two': {'U': 2}}}}} - target = {'one': {'two': 2}} - patched = {'one': {'three': 3, 'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_key_added_to_subhash_noU.py b/tests/ext/test_one_key_added_to_subhash_noU.py deleted file mode 100644 index 91616f1..0000000 --- a/tests/ext/test_one_key_added_to_subhash_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_key_added_to_subhash_noU.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': 2}} - b = {'one': {'three': 3, 'two': 2}} - diff = {'D': {'one': {'D': {'three': {'A': 3}}}}} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'three': {'A': 3}}}}} - target = {'one': {'two': 2}} - patched = {'one': {'three': 3, 'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_key_removed_from_subhash.py b/tests/ext/test_one_key_removed_from_subhash.py deleted file mode 100644 index 790918f..0000000 --- a/tests/ext/test_one_key_removed_from_subhash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_key_removed_from_subhash.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'three': 3, 'two': 2}} - b = {'one': {'two': 2}} - diff = {'D': {'one': {'D': {'three': {'R': 3}, 'two': {'U': 2}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'three': {'R': 3}, 'two': {'U': 2}}}}} - target = {'one': {'three': 3, 'two': 2}} - patched = {'one': {'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_one_key_removed_from_subhash_noU.py b/tests/ext/test_one_key_removed_from_subhash_noU.py deleted file mode 100644 index 808f271..0000000 --- a/tests/ext/test_one_key_removed_from_subhash_noU.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/one_key_removed_from_subhash_noU.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'three': 3, 'two': 2}} - b = {'one': {'two': 2}} - diff = {'D': {'one': {'D': {'three': {'R': 3}}}}} - opts = {'U': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'three': {'R': 3}}}}} - target = {'one': {'three': 3, 'two': 2}} - patched = {'one': {'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_subhash_emptied.py b/tests/ext/test_subhash_emptied.py deleted file mode 100644 index 3271bf1..0000000 --- a/tests/ext/test_subhash_emptied.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/subhash_emptied.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': 2}} - b = {'one': {}} - diff = {'D': {'one': {'D': {'two': {'R': 2}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'two': {'R': 2}}}}} - target = {'one': {'two': 2}} - patched = {'one': {}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_subhash_emptied_noR.py b/tests/ext/test_subhash_emptied_noR.py deleted file mode 100644 index 715b4e3..0000000 --- a/tests/ext/test_subhash_emptied_noR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/subhash_emptied_noR.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {'two': 2}} - b = {'one': {}} - diff = {} - opts = {'R': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {'one': {'two': 2}} - patched = {'one': {'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_subhash_filled.py b/tests/ext/test_subhash_filled.py deleted file mode 100644 index f441c89..0000000 --- a/tests/ext/test_subhash_filled.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/subhash_filled.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {}} - b = {'one': {'two': 2}} - diff = {'D': {'one': {'D': {'two': {'A': 2}}}}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': {'one': {'D': {'two': {'A': 2}}}}} - target = {'one': {}} - patched = {'one': {'two': 2}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_subhash_filled_noA.py b/tests/ext/test_subhash_filled_noA.py deleted file mode 100644 index 5bcce69..0000000 --- a/tests/ext/test_subhash_filled_noA.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/subhash_filled_noA.json -""" -import nested_diff - - -def test_diff(): - a = {'one': {}} - b = {'one': {'two': 2}} - diff = {} - opts = {'A': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = {'one': {}} - patched = {'one': {}} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_sublist_emptied.py b/tests/ext/test_sublist_emptied.py deleted file mode 100644 index d5e8685..0000000 --- a/tests/ext/test_sublist_emptied.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/sublist_emptied.json -""" -import nested_diff - - -def test_diff(): - a = [[0]] - b = [[]] - diff = {'D': [{'D': [{'R': 0}]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'D': [{'R': 0}]}]} - target = [[0]] - patched = [[]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_sublist_emptied_noR.py b/tests/ext/test_sublist_emptied_noR.py deleted file mode 100644 index 128f2f5..0000000 --- a/tests/ext/test_sublist_emptied_noR.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/sublist_emptied_noR.json -""" -import nested_diff - - -def test_diff(): - a = [[0]] - b = [[]] - diff = {} - opts = {'R': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [[0]] - patched = [[0]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_sublist_filled.py b/tests/ext/test_sublist_filled.py deleted file mode 100644 index b3adb79..0000000 --- a/tests/ext/test_sublist_filled.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/sublist_filled.json -""" -import nested_diff - - -def test_diff(): - a = [[]] - b = [[0]] - diff = {'D': [{'D': [{'A': 0}]}]} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'D': [{'D': [{'A': 0}]}]} - target = [[]] - patched = [[0]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_sublist_filled_noA.py b/tests/ext/test_sublist_filled_noA.py deleted file mode 100644 index 7edab1b..0000000 --- a/tests/ext/test_sublist_filled_noA.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/sublist_filled_noA.json -""" -import nested_diff - - -def test_diff(): - a = [[]] - b = [[0]] - diff = {} - opts = {'A': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = [[]] - patched = [[]] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_0.py b/tests/ext/test_undef_vs_0.py deleted file mode 100644 index 2c68d04..0000000 --- a/tests/ext/test_undef_vs_0.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_0.json -""" -import nested_diff - - -def test_diff(): - a = None - b = 0 - diff = {'O': None, 'N': 0} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': None, 'N': 0} - target = None - patched = 0 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_empty_hash.py b/tests/ext/test_undef_vs_empty_hash.py deleted file mode 100644 index 2decf36..0000000 --- a/tests/ext/test_undef_vs_empty_hash.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_empty_hash.json -""" -import nested_diff - - -def test_diff(): - a = None - b = {} - diff = {'O': None, 'N': {}} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': None, 'N': {}} - target = None - patched = {} - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_empty_hash_noNO.py b/tests/ext/test_undef_vs_empty_hash_noNO.py deleted file mode 100644 index ed995c6..0000000 --- a/tests/ext/test_undef_vs_empty_hash_noNO.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_empty_hash_noNO.json -""" -import nested_diff - - -def test_diff(): - a = None - b = {} - diff = {} - opts = {'O': False, 'N': False} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {} - target = None - patched = None - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_empty_list.py b/tests/ext/test_undef_vs_empty_list.py deleted file mode 100644 index eea6c10..0000000 --- a/tests/ext/test_undef_vs_empty_list.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_empty_list.json -""" -import nested_diff - - -def test_diff(): - a = None - b = [] - diff = {'O': None, 'N': []} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': None, 'N': []} - target = None - patched = [] - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_empty_string.py b/tests/ext/test_undef_vs_empty_string.py deleted file mode 100644 index 6f14fd6..0000000 --- a/tests/ext/test_undef_vs_empty_string.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_empty_string.json -""" -import nested_diff - - -def test_diff(): - a = None - b = '' - diff = {'O': None, 'N': ''} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': None, 'N': ''} - target = None - patched = '' - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_negative_number.py b/tests/ext/test_undef_vs_negative_number.py deleted file mode 100644 index 1fd8403..0000000 --- a/tests/ext/test_undef_vs_negative_number.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_negative_number.json -""" -import nested_diff - - -def test_diff(): - a = None - b = -1 - diff = {'O': None, 'N': -1} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'O': None, 'N': -1} - target = None - patched = -1 - assert patched == nested_diff.patch(target, diff) diff --git a/tests/ext/test_undef_vs_undef.py b/tests/ext/test_undef_vs_undef.py deleted file mode 100644 index b524533..0000000 --- a/tests/ext/test_undef_vs_undef.py +++ /dev/null @@ -1,20 +0,0 @@ -""" -Do not edit manually! Generated by tests/gen_ext_tests.py from -https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/undef_vs_undef.json -""" -import nested_diff - - -def test_diff(): - a = None - b = None - diff = {'U': None} - opts = {} - assert diff == nested_diff.diff(a, b, **opts) - - -def test_patch(): - diff = {'U': None} - target = None - patched = None - assert patched == nested_diff.patch(target, diff) diff --git a/tests/gen_ext_tests.py b/tests/gen_ext_tests.py deleted file mode 100755 index ccac6fc..0000000 --- a/tests/gen_ext_tests.py +++ /dev/null @@ -1,46 +0,0 @@ -#!/usr/bin/env python3 - -import json -import os -import sys - - -DIR_INPUT = sys.argv[1] -DIR_OUTPUT = sys.argv[2] - - -for file_name in os.listdir(DIR_INPUT): - with open(os.path.join(DIR_INPUT, file_name)) as f: - data = json.load(f) - - test_name = file_name.replace('.json', '') - test_name = test_name.replace('.', 'dot') - test_name = test_name.replace('-', 'minus') - - test_opts = {} - if 'opts' in data: - for o in data['opts']: - if o.startswith('no'): - test_opts[o.replace('no', '')] = False - elif o == 'trimR': - test_opts['trimR'] = True - - with open(os.path.join(DIR_OUTPUT, 'test_' + test_name + '.py'), 'w') as f: - f.write('"""\n') - f.write('Do not edit manually! Generated by tests/gen_ext_tests.py from\n') - f.write('https://github.com/mr-mixas/Nested-Diff/tree/master/tests/json/' + file_name) - f.write('\n"""\n') - f.write('import nested_diff\n\n\n') - - f.write('def test_diff():\n') - f.write(' a = ' + repr(data['a']) + '\n') - f.write(' b = ' + repr(data['b']) + '\n') - f.write(' diff = ' + repr(data['diff']) + '\n') - f.write(' opts = ' + repr(test_opts) + '\n') - f.write(' assert diff == nested_diff.diff(a, b, **opts)\n') - - f.write('\n\ndef test_patch():\n') - f.write(' diff = ' + repr(data['diff']) + '\n') - f.write(' target = ' + repr(data['a']) + '\n') - f.write(' patched = ' + repr(data.get('patched', data['b'])) + '\n') - f.write(' assert patched == nested_diff.patch(target, diff)\n') diff --git a/tests/test_diff.py b/tests/test_diff.py index 60266d9..df54b84 100644 --- a/tests/test_diff.py +++ b/tests/test_diff.py @@ -1,100 +1,26 @@ -from nested_diff import diff - - -# Test what doesn't covered by external (JSON based) tests - -def test_frozensets_diff(): - a = frozenset((1, 2)) - b = frozenset((2, 3)) - - expected = { - 'D': [ - {'R': 1}, - {'U': 2}, - {'A': 3}, - ], - 'E': frozenset(), - } - - assert expected == diff(a, b) - - -def test_sets_diff(): - a = {1, 2} - b = {2, 3} - - expected = { - 'D': [ - {'R': 1}, - {'U': 2}, - {'A': 3}, - ], - 'E': set(), - } - - assert expected == diff(a, b) - - -def test_sets_diff_noAR(): - a = {1, 2} - b = {2, 3} - - expected = { - 'D': [ - {'U': 2}, - ], - 'E': set(), - } - - assert expected == diff(a, b, A=False, R=False) - - -def test_sets_diff_noU(): - a = {1, 2} - b = {2, 3} - - expected = { - 'D': [ - {'R': 1}, - {'A': 3}, - ], - 'E': set(), - } - - assert expected == diff(a, b, U=False) - - -def test_sets_diff_trimR(): - a = {1, 2} - b = {2, 3} - - expected = { - 'D': [ - {'R': 1}, - {'U': 2}, - {'A': 3}, - ], - 'E': set(), - } - - assert expected == diff(a, b, trimR=True) +import pytest +from nested_diff import diff -def test_sets_diff_empty_diff(): - a = {1, 2} - b = {1, 2, 3} +from tests.data import standard, specific - assert {} == diff(a, b, A=False, U=False) +TESTS = {} +TESTS.update(standard.get_tests()) +TESTS.update(specific.get_tests()) -def test_singleline_str_diff(): - a = 'bar' - b = 'baz' +@pytest.mark.parametrize('name', sorted(TESTS.keys())) +def test_diff(name): + a = TESTS[name]['a'] + b = TESTS[name]['b'] + expected = TESTS[name]['diff'] + opts = TESTS[name].get('diff_opts', {}) + got = diff(a, b, **opts) - expected = {'N': 'baz', 'O': 'bar'} + assert expected == got - assert expected == diff(a, b, multiline_diff_context=3) +# Test what doesn't covered by batch tests above def test_multiline_str_diff(): a = 'one\ntwo\nthree' @@ -113,11 +39,3 @@ def test_multiline_str_diff(): } assert expected == diff(a, b, multiline_diff_context=3) - - -def test_tuples_diff(): - a = (1, 2, 4, 5) - b = (0, 1, 2, 3) - - assert {'D': ({'A': 0}, {'I': 2, 'N': 3}, {'R': 5})} == \ - diff(a, b, O=False, U=False) # noqa: E741 diff --git a/tests/test_fmt_term.py b/tests/test_fmt_term.py new file mode 100644 index 0000000..e37289f --- /dev/null +++ b/tests/test_fmt_term.py @@ -0,0 +1,26 @@ +import pytest + +from nested_diff.fmt import TermFormatter + +import tests.data.formatters +import tests.data.formatters.TermFormatter + +from tests.common import do_test_function, iterate_test_suite + + +def function_to_test(test): + formatter = TermFormatter(**test.get('formatter_opts', {})) + + return formatter.format(test['diff'], **test.get('format_func_opts', {})) + + +@pytest.mark.parametrize( + 'test, func', + iterate_test_suite( + tests.data.formatters.get_tests(), + tests.data.formatters.TermFormatter, + function_to_test, + ), +) +def test_all(test, func): + do_test_function(test, func) diff --git a/tests/test_fmt_text.py b/tests/test_fmt_text.py index cc19367..dada528 100644 --- a/tests/test_fmt_text.py +++ b/tests/test_fmt_text.py @@ -1,263 +1,26 @@ import pytest -from nested_diff import diff from nested_diff.fmt import TextFormatter +import tests.data.formatters +import tests.data.formatters.TextFormatter -def test_numbers_diff(): - a = 0 - b = 1 +from tests.common import do_test_function, iterate_test_suite - got = TextFormatter().format(diff(a, b)) - expected = """\ -- 0 -+ 1 -""" - assert expected == got +def function_to_test(test): + formatter = TextFormatter(**test.get('formatter_opts', {})) -def test_strings_diff(): - a = 'A' - b = 'B' + return formatter.format(test['diff'], **test.get('format_func_opts', {})) - got = TextFormatter().format(diff(a, b)) - expected = """\ -- 'A' -+ 'B' -""" - assert expected == got - -def test_escaped_string_values(): - a = 'A\n' - b = 'A\t' - - got = TextFormatter().format(diff(a, b)) - expected = """\ -- 'A\\n' -+ 'A\\t' -""" - assert expected == got - - -def test_lists_diff(): - a = [0, [1], 3] - b = [0, [1, 2], 3] - - got = TextFormatter().format(diff(a, b)) - - expected = """\ - [0] - 0 - [1] - [0] - 1 -+ [1] -+ 2 - [2] - 3 -""" - - assert expected == got - - -def test_lists_diff_noU(): - a = [0, [1], 3] - b = [0, [1, 2], 3] - - got = TextFormatter().format(diff(a, b, U=False)) - - expected = """\ - [1] -+ [1] -+ 2 -""" - - assert expected == got - - -def test_tuples_diff(): - a = (0, (1,), 3) - b = (0, (1, 2), 3) - - got = TextFormatter().format(diff(a, b)) - - expected = """\ - (0) - 0 - (1) - (0) - 1 -+ (1) -+ 2 - (2) - 3 -""" - - assert expected == got - - -def test_substructures_repr(): - a = [[[[0]], 8], [2]] - b = [[[[0]], 8], [3]] - - got = TextFormatter().format(diff(a, b)) - - expected = """\ - [0] - [[[0]], 8] - [1] - [0] -- 2 -+ 3 -""" - - assert expected == got - - -def test_dicts_diff(): - a = {'one': 1, 'three': 3, 'four': {'forty\ttwo': 42}, 'five': 5} - b = {'two': 2, 'three': 3, 'four': {'forty\ntwo': 42}, 'five': 7} - - got = TextFormatter(sort_keys=True).format(diff(a, b)) - - expected = """\ - {'five'} -- 5 -+ 7 - {'four'} -- {'forty\\ttwo'} -- 42 -+ {'forty\\ntwo'} -+ 42 -- {'one'} -- 1 - {'three'} - 3 -+ {'two'} -+ 2 -""" - - assert expected == got - - -def test_dicts_diff_noU(): - a = {'one': 1, 'three': 3, 'four': {'forty\ttwo': 42}, 'five': 5} - b = {'two': 2, 'three': 3, 'four': {'forty\ntwo': 42}, 'five': 7} - - got = TextFormatter(sort_keys=True).format(diff(a, b, U=False)) - - expected = """\ - {'five'} -- 5 -+ 7 - {'four'} -- {'forty\\ttwo'} -- 42 -+ {'forty\\ntwo'} -+ 42 -- {'one'} -- 1 -+ {'two'} -+ 2 -""" - - assert expected == got - - -def test_sets_diff(): - a = {'a'} - b = {'a', 'b'} - - got = TextFormatter().format(diff(a, b)) - - expected = { - """\ -# - 'a' -+ 'b' -""", - """\ -# -+ 'b' - 'a' -""", - } - - assert got in expected - - -def test_frozensets_diff(): - a = frozenset(('a',)) - b = frozenset(('a', 'b')) - - got = TextFormatter().format(diff(a, b)) - expected = { - """\ -# - 'a' -+ 'b' -""", - """\ -# -+ 'b' - 'a' -""", - } - - assert got in expected - - -def test_mixed_structures_diff(): - a = {'one': [{'two': 2}, 3, set()]} - b = {'one': [{'two': 0}, 4, {True}]} - - got = TextFormatter().format(diff(a, b)) - expected = """\ - {'one'} - [0] - {'two'} -- 2 -+ 0 - [1] -- 3 -+ 4 - [2] -# -+ True -""" - - assert expected == got - - -def test_emitter_absent(): - with pytest.raises(NotImplementedError): - TextFormatter().format({'D': [], 'E': None}) - - -def test_wrappings(): - a = 0 - b = 1 - - got = TextFormatter().format( - diff(a, b), - header='Header', - footer='Footer', - ) - - expected = """\ -Header -- 0 -+ 1 -Footer -""" - assert expected == got - - -def test_depth(): - got = TextFormatter().format(diff(0, 1), depth=2) - expected = """\ -- 0 -+ 1 -""" - assert expected == got +@pytest.mark.parametrize( + 'test, func', + iterate_test_suite( + tests.data.formatters.get_tests(), + tests.data.formatters.TextFormatter, + function_to_test, + ), +) +def test_all(test, func): + do_test_function(test, func) diff --git a/tests/test_fmt_text_multiline.py b/tests/test_fmt_text_multiline.py deleted file mode 100644 index 8294b52..0000000 --- a/tests/test_fmt_text_multiline.py +++ /dev/null @@ -1,87 +0,0 @@ -from nested_diff import diff -from nested_diff.fmt import TextFormatter - - -def test_equal(): - a = 'A\nB\nC' - b = 'A\nB\nC' - - got = TextFormatter().format(diff(a, b, U=False, multiline_diff_context=3)) - - assert '' == got - - -def test_line_added(): - a = 'B\nC' - b = 'A\nB\nC' - - got = TextFormatter().format(diff(a, b, multiline_diff_context=3)) - expected = """\ -# - @@ -1,2 +1,3 @@ -+ A - B - C -""" - assert expected == got - - -def test_line_changed(): - a = 'A\nB\nC' - b = 'A\nb\nC' - - got = TextFormatter().format(diff(a, b, multiline_diff_context=3)) - expected = """\ -# - @@ -1,3 +1,3 @@ - A -- B -+ b - C -""" - assert expected == got - - -def test_line_removed(): - a = 'A\nB\nC' - b = 'A\nC' - - got = TextFormatter().format(diff(a, b, multiline_diff_context=3)) - expected = """\ -# - @@ -1,3 +1,2 @@ - A -- B - C -""" - assert expected == got - - -def test_trailing_newlines(): - a = 'A\nB\n' - b = 'A\nb\n' - - got = TextFormatter().format(diff(a, b, multiline_diff_context=3)) - expected = """\ -# - @@ -1,3 +1,3 @@ - A -- B -+ b - \n\ -""" - assert expected == got - - -def test_line_changed_ctx_0(): - a = 'A\nB\nC' - b = 'A\nb\nC' - - got = TextFormatter().format(diff(a, b, multiline_diff_context=0)) - expected = """\ -# - @@ -2 +2 @@ -- B -+ b -""" - assert expected == got diff --git a/tests/test_objects_internal_methods.py b/tests/test_internal_methods.py similarity index 100% rename from tests/test_objects_internal_methods.py rename to tests/test_internal_methods.py diff --git a/tests/test_patch.py b/tests/test_patch.py index e0529ce..da5fe53 100644 --- a/tests/test_patch.py +++ b/tests/test_patch.py @@ -1,7 +1,29 @@ import pytest -from nested_diff import diff, patch +from nested_diff import patch +from tests.data import standard, specific + + +TESTS = {} +TESTS.update(standard.get_tests()) +TESTS.update(specific.get_tests()) + + +@pytest.mark.parametrize('name', sorted(TESTS.keys())) +def test_patch(name): + diff = TESTS[name]['diff'] + target = TESTS[name]['a'] + + try: + expected = TESTS[name]['patched'] + except KeyError: + expected = TESTS[name]['b'] + + assert expected == patch(target, diff) + + +# Test what doesn't covered by standard tests def test_incorrect_diff_type(): with pytest.raises(TypeError): @@ -19,56 +41,3 @@ class Foo(object): with pytest.raises(NotImplementedError): patch(None, {'D': Foo()}) - - -def test_patch_set(): - a = {1, 2, 4, 5} - b = {0, 1, 2, 3} - - ndiff = { - 'D': [ - {'A': 0}, - {'U': 1}, - {'U': 2}, - {'A': 3}, - {'R': 4}, - {'R': 5}, - ], - 'E': set(), - } - - assert b == patch(a, ndiff) - - -def test_patch_set_trimR(): - a = {1, 2, 4, 5} - b = {0, 1, 2, 3} - - ndiff = diff(a, b, trimR=True) - - assert b == patch(a, ndiff) - - -def test_patch_frozenset(): - a = frozenset((1, 2)) - b = frozenset((2, 3)) - - ndiff = { - 'D': [ - {'R': 1}, - {'U': 2}, - {'A': 3}, - ], - 'E': frozenset(), - } - - assert b == patch(a, ndiff) - - -def test_patch_tuple(): - a = (1, 2, 4, 5) - b = (0, 1, 2, 3) - - ndiff = {'D': ({'A': 0}, {'I': 2, 'N': 3}, {'R': 5})} - - assert b == patch(a, ndiff)