~kiwec/ke

ke/test/Line.cc -rw-r--r-- 1.4 KiB
1cc8481d — Wolf Clément Fix compilation 3 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "Line.h"

#include "../src/Document.h"

void test_line_insert() {
  Text text;
  std::wstring inserted_text = L"abcd\nefg";
  text.insert(inserted_text.c_str(), inserted_text.size(), text.size());
  
  // Lines are the same
  auto first_line = text.get_line(1);
  for(uint i = 0; i < 5; i++) {
    TEST_CHECK(first_line[i] == inserted_text[i]);
  }
  auto second_line = text.get_line(2);
  for(uint i = 0; i < 3; i++) {
    TEST_CHECK(second_line[i] == inserted_text[i + 5]);
  }
}

void test_line_count() {
  Text text;
  TEST_CHECK(text.get_nb_lines() == 1);

  text.insert(L"abcd", 4, text.size());
  TEST_CHECK(text.get_nb_lines() == 1);

  text.insert(L"\n\ne\nfg", 6, text.size());
  TEST_CHECK(text.get_nb_lines() == 4);

  text.erase(0, 1);
  text.erase(text.size() - 1, 1);
  TEST_CHECK(text.get_nb_lines() == 4);

  text.erase(0, text.size());
  TEST_CHECK(text.size() == 0);
  TEST_CHECK(text.get_nb_lines() == 1);
}

void test_prev_next_line() {
  Text text;

  text.insert(L"abcd", 4, text.size());
  TEST_CHECK(text.get_nb_lines() == 1);

  text.insert(L"\nefg", 4, text.size());
  TEST_CHECK(text.get_nb_lines() == 2);

  auto line = text.get_line(1);
  TEST_CHECK(line.is_first());
  TEST_CHECK(line.length() == 4);

  line = line.next();
  TEST_CHECK(line.is_last());
  TEST_CHECK(line.length() == 3);

  line = line.prev();
  TEST_CHECK(line.is_first());
  TEST_CHECK(line.length() == 4);
}