| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | #include "test.h" | ||
| 2 | #include "block-iter.h" | ||
| 3 | #include "buffer.h" | ||
| 4 | #include "editor.h" | ||
| 5 | #include "options.h" | ||
| 6 | #include "shift.h" | ||
| 7 | #include "view.h" | ||
| 8 | #include "window.h" | ||
| 9 | |||
| 10 | 1 | static void test_shift_lines(TestContext *ctx) | |
| 11 | { | ||
| 12 | 1 | EditorState *e = ctx->userdata; | |
| 13 | 1 | View *view = window_open_empty_buffer(e->window); | |
| 14 | 1 | LocalOptions *opts = &view->buffer->options; | |
| 15 | 1 | opts->indent_width = 4; | |
| 16 | 1 | opts->auto_indent = false; | |
| 17 | 1 | opts->emulate_tab = true; | |
| 18 | 1 | opts->expand_tab = true; | |
| 19 | |||
| 20 | 1 | static const char text[] = " line 1\n line 2\n"; | |
| 21 | 1 | BlockIter *cursor = &view->cursor; | |
| 22 | 1 | buffer_insert_bytes(view, text, sizeof(text) - 1); | |
| 23 | 1 | block_iter_goto_offset(cursor, 4); | |
| 24 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 4); | |
| 25 | |||
| 26 | 1 | CodePoint u = 0; | |
| 27 | 1 | EXPECT_EQ(block_iter_get_char(cursor, &u), 1); | |
| 28 | 1 | EXPECT_EQ(u, 'l'); | |
| 29 | |||
| 30 | 1 | shift_lines(view, 1); | |
| 31 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 8); | |
| 32 | 1 | shift_lines(view, 1); | |
| 33 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 12); | |
| 34 | 1 | shift_lines(view, 2); | |
| 35 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 20); | |
| 36 | 1 | shift_lines(view, -1); | |
| 37 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 16); | |
| 38 | 1 | shift_lines(view, -2); | |
| 39 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 8); | |
| 40 | 1 | shift_lines(view, -2); | |
| 41 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 0); | |
| 42 | 1 | shift_lines(view, -1); | |
| 43 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 0); | |
| 44 | 1 | shift_lines(view, 1); | |
| 45 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 4); | |
| 46 | 1 | shift_lines(view, -50); | |
| 47 | 1 | EXPECT_EQ(block_iter_get_offset(cursor), 0); | |
| 48 | |||
| 49 | 1 | window_close_current_view(e->window); | |
| 50 | 1 | } | |
| 51 | |||
| 52 | static const TestEntry tests[] = { | ||
| 53 | TEST(test_shift_lines), | ||
| 54 | }; | ||
| 55 | |||
| 56 | const TestGroup shift_tests = TEST_GROUP(tests); | ||
| 57 |