Exemple #1
0
def test_diff_remove_record_without_id():
    left = Grid(columns={"a": {}, "b": {}})
    left.append({"a": 1, "b": 2})
    left.append({"a": 3, "b": 4})
    right = Grid(columns={"a": {}, "b": {}})
    right.append({"a": 5, "b": 6})

    diff = grid_diff(left, right)
    assert len(diff) == 3
    assert len(diff[0].keys()) == 3
    assert diff[0]['a'] == 1
    assert diff[0]['b'] == 2
    assert diff[0]['remove_'] == REMOVE
    assert len(diff[1].keys()) == 3
    assert diff[1]['a'] == 3
    assert diff[1]['b'] == 4
    assert diff[1]['remove_'] == REMOVE
    assert len(diff[2].keys()) == 2
    assert diff[2]['a'] == 5
    assert diff[2]['b'] == 6

    assert 'id' not in diff.column
    assert 'a' in diff.column
    assert 'b' in diff.column

    assert grid_merge(left, diff) == right
Exemple #2
0
def test_diff_version():
    left = Grid(version=VER_2_0)
    right = Grid(version=VER_3_0)

    diff = grid_diff(left, right)

    assert diff.version == VER_3_0
    assert grid_merge(left, diff) == right  # A + (B - A) == B
Exemple #3
0
def test_diff_with_same_grid():
    left = Grid(columns={"a": {}, "b": {}})
    left.append({"a": 1, "b": 2})
    left.append({"a": 3, "b": 4})

    diff = grid_diff(left, left)
    assert len(diff) == 0

    assert grid_merge(left.copy(), diff) == left
Exemple #4
0
def test_diff_cols_move_col():
    left = Grid(columns={"a": {'m': 1}, "b": {'m': 2}, "c": {'m': 3}})
    right = Grid(columns={"b": {'m': 2}, "a": {'m': 1}, "c": {'m': 3}})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert len(diff.column) == 3

    assert grid_merge(left, diff) == right
Exemple #5
0
def test_diff_cols_remove_first_col():
    left = Grid(columns={"a": {'m': 1}, "b": {'m': 2}, "c": {'m': 3}})
    right = Grid(columns={"b": {'m': 4}, "c": {'m': 3}})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.column["a"] == {'remove_': REMOVE}
    assert len(diff.column) == 3

    assert grid_merge(left, diff) == right
Exemple #6
0
def test_diff_cols_remove_value_in_map():
    left = Grid(columns={"a": {'m': 1, 'n': 2}, "b": {'m': 2}})
    right = Grid(columns={"a": {'n': 2}, "b": {'m': 2}})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.column["a"] == {"m": REMOVE}
    assert diff.column["b"] == {}

    assert grid_merge(left, diff) == right
Exemple #7
0
def test_diff_cols_add_value_in_map():
    left = Grid(columns={"a": {'m': 1}, "b": {'m': 2}})
    right = Grid(columns={"a": {'m': 1, 'n': 2}, "b": {'m': 4}})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.column["a"] == {"n": 2}
    assert diff.column["b"] == {"m": 4}

    assert grid_merge(left, diff) == right
Exemple #8
0
def test_diff_metadata_remove_value():
    left = Grid(metadata={"a": 1, "b": 2})
    right = Grid(metadata={"b": 2})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.metadata["a"] == REMOVE
    assert "b" not in diff.metadata

    assert grid_merge(left, diff) == right
Exemple #9
0
def test_diff_metadata_change_value():
    left = Grid(metadata={"a": 1, "b": 2})
    right = Grid(metadata={"a": 3, "b": 4})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.metadata["a"] == 3
    assert diff.metadata["b"] == 4

    assert grid_merge(left, diff) == right
Exemple #10
0
def test_diff_metadata_add_value():
    left = Grid(metadata={"a": 1, "b": 2})
    right = Grid(metadata={"a": 1, "b": 2, "c": 3})

    diff = grid_diff(left, right)
    assert len(diff) == 0
    assert diff.metadata["c"] == 3
    assert "a" not in diff.metadata
    assert "b" not in diff.metadata

    assert grid_merge(left, diff) == right
Exemple #11
0
def test_diff_with_no_column():
    left = Grid(columns={"a": {}, "b": {}})
    left.append({"a": 1, "b": 2})
    left.append({"a": 3, "b": 4})
    left.append({"a": 1, "b": 2})
    left.append({"a": 1, "b": 2})
    right = Grid()

    diff = grid_diff(left, right)
    assert len(diff) == 4

    assert grid_merge(left.copy(), diff) == right
Exemple #12
0
def _try_diff():
    while True:
        try:
            orig_grid = gen_random_grid()
            delta_grid = gen_diff(orig_grid)
            _validate_grid(orig_grid)
            _validate_grid(delta_grid)
            diff = grid_diff(orig_grid, delta_grid)
            _validate_grid(diff)
            apply = grid_merge(orig_grid.copy(), diff)
            _validate_grid(apply)
            assert apply == delta_grid
            return
        except RefuseRemove:
            pass
Exemple #13
0
def test_diff_same_record_without_id_in_source():
    left = Grid(columns={"a": {}, "b": {}})
    left.append({"a": 1, "b": 2})
    left.append({"a": 1, "b": 2})
    left.append({"a": 3, "b": 4})

    right = Grid(columns={"a": {}, "b": {}})
    right.append({"a": 1, "b": 2})
    right.append({"a": 3, "b": 4})
    right.append({"a": 3, "b": 4})

    diff = grid_diff(left, right)
    assert len(diff) == 2
    assert diff[0]['remove_'] is REMOVE
    assert diff[1] == {"a": 3, "b": 4}
    assert grid_merge(left, diff) == right
Exemple #14
0
def test_diff_same_record_with_empty_map():
    left = Grid(columns={"a": {}, "b": {}})
    left.append({})
    left.append({})
    left.append({"a": 3, "b": 4})

    right = Grid(columns={"a": {}, "b": {}})
    right.append({})
    right.append({"a": 3, "b": 4})
    right.append({"a": 3, "b": 4})

    assert left != right
    diff = grid_diff(left, right)
    assert len(diff) == 2
    assert diff[0]['remove_'] is REMOVE
    assert diff[1] == {"a": 3, "b": 4}
    assert grid_merge(left, diff) == right
Exemple #15
0
def test_diff_remove_value_with_id():
    left = Grid(columns={"id": {}, "a": {}, "b": {}})
    left.append({"id": Ref("my_id"), "a": 1, "b": 2})
    right = Grid(columns={"id": {}, "a": {}, "b": {}})
    right.append({"id": Ref("my_id"), "a": 3})

    diff = grid_diff(left, right)
    assert len(diff) == 1
    assert len(diff[0].keys()) == 3
    assert diff[0]['id'] == Ref("my_id")
    assert diff[0]['a'] == 3
    assert diff[0]['b'] == REMOVE

    assert 'id' in diff.column
    assert 'a' in diff.column
    assert 'b' in diff.column

    assert grid_merge(left, diff) == right