-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathParser_test.cc
118 lines (91 loc) · 3.07 KB
/
Parser_test.cc
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
//
// Copyright (c) 2023 Adam Lichtl.
//
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <fstream>
#include <stdexcept>
#include "Parser.h"
namespace parser {
using ::std::ifstream;
using ::std::runtime_error;
using ::testing::ElementsAre;
using ::testing::Pair;
TEST(Parser, OriginalTestCase) {
auto index = Parser().parse("zzz aaa bbb aaa\n");
EXPECT_THAT(index,
ElementsAre(Pair("aaa", ElementsAre(4, 12)), Pair("bbb", ElementsAre(8)), Pair("zzz", ElementsAre(0))));
}
TEST(Parser, OriginalTestCaseWithoutTrailingWhitespace) {
const auto index = Parser().parse("zzz aaa bbb aaa");
EXPECT_THAT(index,
ElementsAre(Pair("aaa", ElementsAre(4, 12)), Pair("bbb", ElementsAre(8)), Pair("zzz", ElementsAre(0))));
}
TEST(Parser, OriginalTestCaseFromFile) {
ifstream file("../sample_files/orig.txt");
ASSERT_TRUE(file);
const auto index = Parser().parse(file);
EXPECT_THAT(index,
ElementsAre(Pair("aaa", ElementsAre(4, 12)), Pair("bbb", ElementsAre(8)), Pair("zzz", ElementsAre(0))));
}
TEST(Parser, SmallBuffer) {
const size_t buffer_size_bytes{2};
const auto index = Parser(buffer_size_bytes).parse("zzz aaa bbb aaa\n");
EXPECT_THAT(index,
ElementsAre(Pair("aaa", ElementsAre(4, 12)), Pair("bbb", ElementsAre(8)), Pair("zzz", ElementsAre(0))));
}
TEST(Parser, UTF8FileWithUnicode) {
ifstream file("../sample_files/limerick_lf_utf8.txt");
ASSERT_TRUE(file);
const auto index = Parser().parse(file);
ASSERT_EQ(index.size(), 30);
auto it = index.find("består");
ASSERT_NE(it, index.end());
EXPECT_THAT(it->second, ElementsAre(95));
}
TEST(Parser, UTF8FileCRLF) {
ifstream file("../sample_files/limerick_crlf_utf8.txt");
ASSERT_TRUE(file);
const auto index = Parser().parse(file);
ASSERT_EQ(index.size(), 30);
auto it = index.find("består");
ASSERT_NE(it, index.end());
EXPECT_THAT(it->second, ElementsAre(96));
}
TEST(Parser, UTF8FileCRLFBOM) {
ifstream file("../sample_files/limerick_crlf_utf8_bom.txt");
ASSERT_TRUE(file);
const auto index = Parser().parse(file);
ASSERT_EQ(index.size(), 30);
auto it = index.find("består");
ASSERT_NE(it, index.end());
EXPECT_THAT(it->second, ElementsAre(99));
}
TEST(Parser, EmptyFile) {
ifstream file("../sample_files/empty.txt");
ASSERT_TRUE(file);
auto index = Parser().parse(file);
ASSERT_EQ(index.size(), 0);
}
TEST(Parser, NullFileThrows) {
ifstream file("../sample_files/null.txt");
ASSERT_TRUE(file);
EXPECT_THROW(Parser().parse(file), runtime_error);
}
TEST(Parser, SingleCharFile) {
ifstream file("../sample_files/single_char.txt");
ASSERT_TRUE(file);
auto index = Parser().parse(file);
EXPECT_THAT(index, ElementsAre(Pair("a", ElementsAre(0))));
}
TEST(Parser, UTF16LEFileThrows) {
ifstream file("../sample_files/limerick_crlf_utf16le_bom.txt");
ASSERT_TRUE(file);
EXPECT_THROW(Parser().parse(file), runtime_error);
}
TEST(Parser, UTF16BEFileThrows) {
ifstream file("../sample_files/limerick_crlf_utf16be_bom.txt");
ASSERT_TRUE(file);
EXPECT_THROW(Parser().parse(file), runtime_error);
}
} // namespace parser