· 5 years ago · Jul 18, 2020, 09:28 AM
1void testSplit() {
2 auto res = Split("abra kadabra boo");
3 vector<string_view> vec = {"abra", "kadabra", "boo"};
4 ASSERT_EQUAL(res, vec);
5}
6
7void testReversedDomain() {
8 Domain domain("msc.m.yandex.ru");
9 auto res = domain.GetReversedParts();
10 vector<string> resultVec(res.begin(), res.end());
11
12 vector<string> vec = {"ru", "yandex", "m", "msc"};
13
14 ASSERT_EQUAL(resultVec, vec);
15}
16
17void testSubDomain() {
18 Domain domain("yandex.ru");
19 auto subDomain = domain;
20 ASSERT(IsSubdomain(subDomain, domain))
21}
22
23void testSubDomainWrongArgs() {
24 Domain domain("ru");
25 Domain subDomain("msc.m.yandex.ru");
26 ASSERT(IsSubdomain(subDomain, domain));
27}
28
29void testConsumeSubDomain() {
30 vector<Domain> domains = {Domain("google.com"), Domain("maps.google.com")};
31 DomainChecker checker(domains.begin(), domains.end());
32 ASSERT(checker.IsSubdomain(Domain("mail.google.com")))
33}
34
35void testReversedAnswers() {
36 vector<Domain> bannedDomains = {Domain("ya.ru"), Domain("com")};
37 vector<Domain> domainsToCheck = {Domain("maps.me"), Domain("google.com"),
38 Domain("m.ya.ru")};
39
40 ostringstream out;
41 auto answer = CheckDomains(bannedDomains, domainsToCheck);
42 PrintCheckResults(answer, out);
43
44 string result("Good\n"
45 "Bad\n"
46 "Bad\n");
47 ASSERT_EQUAL(out.str(), result);
48}
49
50void testReadDomains() {
51 vector<string> vec = {"maps.me", "yandex.ru", "google.com"};
52 vector<Domain> domains;
53 stringstream str_stream;
54 str_stream << vec.size() << "\n";
55 for(const auto& str : vec) {
56 domains.emplace_back(str);
57 str_stream << str << "\n";
58 }
59
60 auto res = ReadDomains(str_stream);
61
62 ASSERT_EQUAL(res, domains);
63}
64
65void common_test() {
66 vector<string> bannedVec = {"ya.ru",
67 "maps.me",
68 "m.ya.ru",
69 "com"};
70 stringstream str_stream;
71 str_stream << bannedVec.size() << "\n";
72 for(const auto& str : bannedVec) {
73 str_stream << str << "\n";
74 }
75 auto bannedDomains = ReadDomains(str_stream);
76
77 DomainChecker checker(bannedDomains.begin(), bannedDomains.end());
78 ASSERT(checker.IsSubdomain(Domain("mayak.com")));
79
80 vector<string> checkVec = {"ya.ru",
81 "ya.com",
82 "m.maps.me",
83 "moscow.m.ya.ru",
84 "maps.com",
85 "maps.ru",
86 "ya.ya",
87 "com.me",
88 "ya.com.me"};
89 str_stream.str("");
90 str_stream << checkVec.size() << "\n";
91 for(const auto& str : checkVec) {
92 str_stream << str << "\n";
93 }
94 auto domainsToCheck = ReadDomains(str_stream);
95
96 auto answer = CheckDomains(bannedDomains, domainsToCheck);
97 ostringstream out;
98 PrintCheckResults(answer, out);
99
100 string res("Bad\n"
101 "Bad\n"
102 "Bad\n"
103 "Bad\n"
104 "Bad\n"
105 "Good\n"
106 "Good\n"
107 "Good\n"
108 "Good\n");
109 ASSERT_EQUAL(out.str(), res);
110}