dte test coverage


Directory: ./
File: src/copy.c
Date: 2025-12-11 10:43:49
Coverage Exec Excl Total
Lines: 76.2% 16 0 21
Functions: 100.0% 1 0 1
Branches: 64.3% 9 0 14

Line Branch Exec Source
1 #include "copy.h"
2 #include "block-iter.h"
3 #include "change.h"
4 #include "insert.h"
5 #include "move.h"
6 #include "selection.h"
7
8 6 void paste(Clipboard *clip, View *view, PasteLinesType type, bool move_after)
9 {
10
1/2
✓ Branch 2 → 3 taken 6 times.
✗ Branch 2 → 24 not taken.
6 if (clip->len == 0) {
11 return;
12 }
13
14 6 BUG_ON(!clip->buf);
15
4/4
✓ Branch 5 → 6 taken 5 times.
✓ Branch 5 → 7 taken 1 time.
✓ Branch 6 → 7 taken 1 time.
✓ Branch 6 → 9 taken 4 times.
6 if (!clip->is_lines || type == PASTE_LINES_INLINE) {
16 2 insert_text(view, clip->buf, clip->len, move_after);
17 2 return;
18 }
19
20 4 size_t del_count = 0;
21
1/2
✗ Branch 9 → 10 not taken.
✓ Branch 9 → 12 taken 4 times.
4 if (view->selection) {
22 del_count = prepare_selection(view);
23 unselect(view);
24 }
25
26 4 const long x = view_get_preferred_x(view);
27
1/2
✓ Branch 13 → 14 taken 4 times.
✗ Branch 13 → 19 not taken.
4 if (!del_count) {
28
1/2
✓ Branch 14 → 15 taken 4 times.
✗ Branch 14 → 16 not taken.
4 if (type == PASTE_LINES_BELOW_CURSOR) {
29 4 block_iter_eat_line(&view->cursor);
30 } else {
31 BUG_ON(type != PASTE_LINES_ABOVE_CURSOR);
32 block_iter_bol(&view->cursor);
33 }
34 }
35
36 4 buffer_replace_bytes(view, del_count, clip->buf, clip->len);
37
38
1/2
✗ Branch 20 → 21 not taken.
✓ Branch 20 → 22 taken 4 times.
4 if (move_after) {
39 block_iter_skip_bytes(&view->cursor, clip->len);
40 } else {
41 // Try to keep cursor column
42 4 move_to_preferred_x(view, x);
43 }
44
45 // New preferred_x
46 4 view_reset_preferred_x(view);
47 }
48