-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_uniq.cpp
More file actions
70 lines (61 loc) · 2.17 KB
/
test_uniq.cpp
File metadata and controls
70 lines (61 loc) · 2.17 KB
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
#include <cfbox/applets.hpp>
#include <gtest/gtest.h>
#include "test_capture.hpp"
#include <cfbox/applet_config.hpp>
#if CFBOX_ENABLE_UNIQ
using namespace cfbox::test;
TEST(UniqTest, BasicDedup) {
TempDir tmp;
auto f = tmp.write_file("data.txt", "apple\napple\nbanana\nbanana\nbanana\ncherry\n");
char a0[] = "uniq", a1[256];
std::snprintf(a1, sizeof(a1), "%s", f.c_str());
char* argv[] = {a0, a1};
auto out = capture_stdout([&]{ return uniq_main(2, argv); });
EXPECT_EQ(out, "apple\nbanana\ncherry\n");
}
TEST(UniqTest, CountFlag) {
TempDir tmp;
auto f = tmp.write_file("data.txt", "a\na\na\nb\nb\nc\n");
char a0[] = "uniq", a1[] = "-c", a2[256];
std::snprintf(a2, sizeof(a2), "%s", f.c_str());
char* argv[] = {a0, a1, a2};
auto out = capture_stdout([&]{ return uniq_main(3, argv); });
EXPECT_EQ(out, " 3 a\n 2 b\n 1 c\n");
}
TEST(UniqTest, RepeatedOnly) {
TempDir tmp;
auto f = tmp.write_file("data.txt", "a\na\nb\nc\nc\n");
char a0[] = "uniq", a1[] = "-d", a2[256];
std::snprintf(a2, sizeof(a2), "%s", f.c_str());
char* argv[] = {a0, a1, a2};
auto out = capture_stdout([&]{ return uniq_main(3, argv); });
EXPECT_EQ(out, "a\nc\n");
}
TEST(UniqTest, UniqueOnly) {
TempDir tmp;
auto f = tmp.write_file("data.txt", "a\na\nb\nc\nc\n");
char a0[] = "uniq", a1[] = "-u", a2[256];
std::snprintf(a2, sizeof(a2), "%s", f.c_str());
char* argv[] = {a0, a1, a2};
auto out = capture_stdout([&]{ return uniq_main(3, argv); });
EXPECT_EQ(out, "b\n");
}
TEST(UniqTest, NoDuplicates) {
TempDir tmp;
auto f = tmp.write_file("data.txt", "a\nb\nc\n");
char a0[] = "uniq", a1[256];
std::snprintf(a1, sizeof(a1), "%s", f.c_str());
char* argv[] = {a0, a1};
auto out = capture_stdout([&]{ return uniq_main(2, argv); });
EXPECT_EQ(out, "a\nb\nc\n");
}
TEST(UniqTest, EmptyFile) {
TempDir tmp;
auto f = tmp.write_file("empty.txt", "");
char a0[] = "uniq", a1[256];
std::snprintf(a1, sizeof(a1), "%s", f.c_str());
char* argv[] = {a0, a1};
auto out = capture_stdout([&]{ return uniq_main(2, argv); });
EXPECT_EQ(out, "");
}
#endif // CFBOX_ENABLE_UNIQ