Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void TestExcludeStopWordsFromAddedDocumentContent() {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = { 1, 2, 3 };
- {
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- const auto found_docs = server.FindTopDocuments("in"s);
- ASSERT_EQUAL(found_docs.size(), 1u);
- const Document& doc0 = found_docs[0];
- ASSERT_EQUAL(doc0.id, doc_id);
- }
- {
- SearchServer server;
- server.SetStopWords("in the"s);
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- ASSERT_HINT(server.FindTopDocuments("in"s).empty(),
- "Stop words must be excluded from documents"s);
- }
- }
- void TestMinusWordsFromAddedDocumentContent() {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = { 1, 2, 3 };
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- ASSERT_HINT(server.FindTopDocuments("cat in the -city"s).empty(), "Minus words must exclude the document"s);
- }
- void TestMatching() {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = { 1, 2, 3 };
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- tuple<vector<string>, DocumentStatus> match = server.MatchDocument("cat in the city"s, 42);
- vector<string> answer = { "cat"s, "city"s, "in"s, "the"s };
- vector<string> totest = get<0>(match);
- ASSERT_EQUAL(answer, totest);
- }
- void TestMatchingWithMinus() {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = { 1, 2, 3 };
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- tuple<vector<string>, DocumentStatus> match = server.MatchDocument("cat in the -city"s, 42);
- vector<string> totest = get<0>(match);
- ASSERT(totest.empty());
- }
- void RelevanceSortingTest() {
- SearchServer server;
- server.AddDocument(1, "Привет прогулка друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
- server.AddDocument(2, "Привет привет друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
- server.AddDocument(3, "Привет привет привет дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
- server.AddDocument(4, "Привет привет привет привет"s, DocumentStatus::ACTUAL, { 1,2,3 });
- server.AddDocument(5, "Трактор прогулка друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
- vector<int> relevances;
- for (const Document& document : server.FindTopDocuments("Привет привет"s))
- {
- relevances.push_back(document.id);
- }
- vector <int> answer = { 4,3,2,1 };
- ASSERT_EQUAL(relevances, answer);
- }
- void RatingTest() {
- SearchServer server;
- server.AddDocument(1, "Привет прогулка друг дрова"s, DocumentStatus::ACTUAL, { 5,7,8,9,12,20,100,1,2,5,4,6,7,1,-3,-5,-1 });
- //cout << "rating = "s << server.FindTopDocuments("Привет привет"s)[0].rating << " }"s << endl;
- ASSERT_EQUAL((server.FindTopDocuments("Привет привет"s)[0].rating), 10);
- }
- void PredicatTest() {
- SearchServer server;
- server.SetStopWords("и в на"s);
- server.AddDocument(0, "белый кот и модный ошейник"s, DocumentStatus::ACTUAL, { 8, -3 });
- server.AddDocument(1, "пушистый кот пушистый хвост"s, DocumentStatus::ACTUAL, { 7, 2, 7 });
- server.AddDocument(2, "ухоженный пёс выразительные глаза"s, DocumentStatus::ACTUAL, { 5, -12, 2, 1 });
- server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
- int id1 = server.FindTopDocuments("пушистый ухоженный кот"s)[0].id;
- int id2 = server.FindTopDocuments("пушистый ухоженный кот"s, DocumentStatus::BANNED)[0].id;
- int id3 = server.FindTopDocuments("пушистый ухоженный кот"s, [](int document_id, DocumentStatus status, int rating) { return document_id % 2 == 0; })[0].id;
- ASSERT_EQUAL(id1, 1);
- ASSERT_EQUAL(id2, 3);
- ASSERT_EQUAL(id3, 0);
- }
- void StatusTest() {
- SearchServer server;
- server.AddDocument(0, "ухоженный скворец евгений"s, DocumentStatus::ACTUAL, { 9 });
- server.AddDocument(1, "ухоженный скворец евгений"s, DocumentStatus::IRRELEVANT, { 9 });
- server.AddDocument(2, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
- server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::REMOVED, { 9 });
- int id1 = server.FindTopDocuments("евгений - свинья"s, DocumentStatus::BANNED)[0].id;
- int id2 = server.FindTopDocuments("евгений - скворец"s, DocumentStatus::ACTUAL)[0].id;
- int id3 = server.FindTopDocuments("евгений - яйцо"s, DocumentStatus::REMOVED)[0].id;
- int id4 = server.FindTopDocuments("евгений - полушлюз"s, DocumentStatus::IRRELEVANT)[0].id;
- ASSERT_EQUAL(id1, 2);
- ASSERT_EQUAL(id2, 0);
- ASSERT_EQUAL(id3, 3);
- ASSERT_EQUAL(id4, 1);
- }
- void RelevanceTest() {
- SearchServer search_server;
- search_server.SetStopWords("и в на"s);
- search_server.AddDocument(0, "белый кот и модный ошейник"s, DocumentStatus::ACTUAL, { 8, -3 });
- search_server.AddDocument(1, "пушистый кот пушистый хвост"s, DocumentStatus::ACTUAL, { 7, 2, 7 });
- search_server.AddDocument(2, "ухоженный пёс выразительные глаза"s, DocumentStatus::ACTUAL, { 5, -12, 2, 1 });
- search_server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
- double rel = search_server.FindTopDocuments("пушистый ухоженный кот"s)[0].relevance;
- ASSERT_EQUAL(rel, 0.8664339756999316);
- }
- void TestSearchServer() {
- RUN_TEST(TestExcludeStopWordsFromAddedDocumentContent);
- RUN_TEST(TestMinusWordsFromAddedDocumentContent);
- //
- RUN_TEST(TestMatching);
- RUN_TEST(TestMatchingWithMinus);
- //
- RUN_TEST(RelevanceSortingTest);
- RUN_TEST(RatingTest);
- RUN_TEST(PredicatTest);
- RUN_TEST(StatusTest);
- RUN_TEST(RelevanceTest);
- }
- // --------- Окончание модульных тестов поисковой системы -----------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement