aboutsummaryrefslogtreecommitdiff
path: root/test/common/StringTest.cpp
blob: 7198f47b1e4145858d0f4dfe9cbd3870585337ca (plain)
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
62
63
64
65
66
67
68
69
70
71
#include "cru/common/String.hpp"
#include "cru/common/Format.hpp"

#include <gtest/gtest.h>

TEST(String, Append) {
  using cru::String;

  String s;
  s.append(u"ha");
  s.append(s);
  ASSERT_EQ(s, String(u"haha"));
}

TEST(String, IndexConvert) {
  using cru::String;

  String s(u"123");
  ASSERT_EQ(s.IndexFromCodePointToCodeUnit(1), 1);
  ASSERT_EQ(s.IndexFromCodeUnitToCodePoint(1), 1);
  ASSERT_EQ(s.IndexFromCodeUnitToCodePoint(3), 3);
  ASSERT_EQ(s.IndexFromCodeUnitToCodePoint(3), 3);
}

TEST(String, Format) {
  using cru::Format;
  using cru::String;

  ASSERT_EQ(Format(u"{} + {} = {}", 123, 321, 444), String(u"123 + 321 = 444"));
}

TEST(String, Trim) {
  using cru::String;
  ASSERT_EQ(String(u"  abc  ").Trim(), u"abc");
}

TEST(String, SplitToLines) {
  using cru::String;

  String s(u"abc\ndef\nghi");
  auto lines = s.SplitToLines();
  ASSERT_EQ(lines.size(), 3);
  ASSERT_EQ(lines[0], String(u"abc"));
  ASSERT_EQ(lines[1], String(u"def"));
  ASSERT_EQ(lines[2], String(u"ghi"));
}

TEST(String, SplitToLinesWithEmptyLine) {
  using cru::String;

  String s(u"abc\n   \ndef\n\nghi\n");
  auto lines = s.SplitToLines();
  ASSERT_EQ(lines.size(), 6);
  ASSERT_EQ(lines[0], String(u"abc"));
  ASSERT_EQ(lines[1], String(u"   "));
  ASSERT_EQ(lines[2], String(u"def"));
  ASSERT_EQ(lines[3], String(u""));
  ASSERT_EQ(lines[4], String(u"ghi"));
  ASSERT_EQ(lines[5], String(u""));
}

TEST(String, SplitToLinesRemoveSpaceLine) {
  using cru::String;

  String s(u"abc\n   \ndef\n\nghi\n");
  auto lines = s.SplitToLines(true);
  ASSERT_EQ(lines.size(), 3);
  ASSERT_EQ(lines[0], String(u"abc"));
  ASSERT_EQ(lines[1], String(u"def"));
  ASSERT_EQ(lines[2], String(u"ghi"));
}