Passed
Push — main ( 46d75e...737583 )
by Ray
01:49
created

test_insert_in_lines_regression()   A

Complexity

Conditions 1

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 9
nop 0
dl 0
loc 16
rs 9.95
c 0
b 0
f 0
1
from menderbot.source_file import Insertion, insert_in_lines
2
3
4
def test_insert_in_lines_empty():
5
    expected = []
6
    lines = []
7
    insertions = []
8
    assert list(insert_in_lines(lines, insertions)) == expected
9
10
11
def test_insert_in_lines_insert_first():
12
    expected = ["aaa\n", "bbb\n", "ccc\n"]
13
    lines = ["bbb\n", "ccc\n"]
14
    insertions = [Insertion(text="aaa", line_number=1, label="...")]
15
    assert list(insert_in_lines(lines, insertions)) == expected
16
17
18
def test_insert_in_lines_insert_middle():
19
    expected = ["aaa\n", "bbb\n", "ccc\n"]
20
    lines = ["aaa\n", "ccc\n"]
21
    insertions = [Insertion(text="bbb", line_number=2, label="...")]
22
    assert list(insert_in_lines(lines, insertions)) == expected
23
24
25
def test_insert_in_lines_insert_last():
26
    expected = ["aaa\n", "bbb\n", "ccc\n"]
27
    lines = ["aaa\n", "bbb\n"]
28
    insertions = [Insertion(text="ccc", line_number=3, label="...")]
29
    assert list(insert_in_lines(lines, insertions)) == expected
30
31
32
def test_insert_in_lines_insert_inline():
33
    expected = ["aaa\n", "_b_\n", "ccc\n"]
34
    lines = ["aaa\n", "__\n", "ccc\n"]
35
    insertions = [Insertion(text="b", line_number=2, label="...", inline=True, col=2)]
36
    assert list(insert_in_lines(lines, insertions)) == expected
37
38
39
def test_insert_in_lines_insert_inline_muliple_in_one_line():
40
    expected = ["aaa\n", "_1a_2b_\n", "ccc\n"]
41
    lines = ["aaa\n", "_1_2_\n", "ccc\n"]
42
    insertions = [
43
        Insertion(text="a", line_number=2, label="...", inline=True, col=3),
44
        Insertion(text="b", line_number=2, label="...", inline=True, col=5),
45
    ]
46
    assert list(insert_in_lines(lines, insertions)) == expected
47
48
49
def test_insert_in_lines_insert_inline_muliple_in_one_line_regression():
50
    expected = ["def foo(i: int, j: int) -> int:\n", "    return i+j\n"]
51
    lines = ["def foo(i: int, j):\n", "    return i+j\n"]
52
    insertions = [
53
        Insertion(text=": int", line_number=1, label="...", inline=True, col=18),
54
        Insertion(text=" -> int", line_number=1, label="...", inline=True, col=19),
55
    ]
56
    assert list(insert_in_lines(lines, insertions)) == expected
57
58
59
def test_insert_in_lines_insert_inline_muliple_line():
60
    expected = ["aaa\n", "_1a_\n", "_2b_\n"]
61
    lines = ["aaa\n", "_1_\n", "_2_\n"]
62
    insertions = [
63
        Insertion(text="a", line_number=2, label="...", inline=True, col=3),
64
        Insertion(text="b", line_number=3, label="...", inline=True, col=3),
65
    ]
66
    assert list(insert_in_lines(lines, insertions)) == expected
67
68
69
def test_insert_in_lines_insert_inline_muliple_line():
70
    expected = ["aaa\n", "_1a_\n", "_2b_\n"]
71
    lines = ["aaa\n", "_1_\n", "_2_\n"]
72
    insertions = [
73
        Insertion(text="a", line_number=2, label="...", inline=True, col=3),
74
        Insertion(text="b", line_number=3, label="...", inline=True, col=3),
75
    ]
76
    assert list(insert_in_lines(lines, insertions)) == expected
77
78
def test_insert_in_lines_regression():
79
    code = """
80
def foo(a):
81
    pass
82
    """
83
    expected_code = """
84
def foo(a: int) -> None:
85
    pass
86
    """
87
    lines = code.splitlines(True)
88
    expected = expected_code.splitlines(True)
89
    insertions = [
90
        Insertion(text=": int", line_number=2, col=10, inline=True, label="foo"),
91
        Insertion(text=" -> None", line_number=2, col=11, inline=True, label="foo"),
92
    ]
93
    assert list(insert_in_lines(lines, insertions)) == expected
94