Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void TestExcludeStopWordsFromAddedDocumentContent() {
- const int doc_id = 42;
- const string document = "cat in the city"s;
- const vector<int> ratings = { 1, 2, 3 };
- // Сначала убеждаемся, что поиск слова, не входящего в список стоп-слов,
- // находит нужный документ
- {
- SearchServer server;
- server.AddDocument(doc_id, document, DocumentStatus::ACTUAL, ratings);
- const auto found_docs = server.FindTopDocuments("in"s);
- assert(found_docs.size() == 1);
- const Document& doc0 = found_docs[0];
- assert(doc0.id == doc_id);
- }
- // Затем убеждаемся, что поиск этого же слова, входящего в список стоп-слов,
- // возвращает пустой результат
- {
- SearchServer server;
- server.SetStopWords("in the"s);
- server.AddDocument(doc_id, document, DocumentStatus::ACTUAL, ratings);
- assert(server.FindTopDocuments("in"s).empty());
- }
- }
- void TestAverageRating() {
- SearchServer server;
- const vector<vector<int>> ratings = { {8 , -3}, {7, 2, 7}, {5, -12, 2, 1} };
- const vector<string> documents = {
- "белый кот и модный ошейник",
- "пушистый кот пушистый хвост",
- "ухоженный пёс выразительные глаза" };
- server.SetStopWords("и в на");
- for (int i = 0; i < 3; ++i)
- {
- server.AddDocument(i, documents[i], DocumentStatus::ACTUAL, ratings[i]);
- }
- const vector <Document> result_documents = server.FindTopDocuments("пушистый ухоженный кот");
- assert(result_documents[0].rating == 5);
- assert(result_documents[1].rating == -1);
- assert(result_documents[2].rating == 2);
- }
- void TestRelevance() {
- SearchServer server;
- const vector<int> ratings = { 1,2,3,4,5 };
- const vector<string> documents = {
- "a colorful parrot with green wings and red tail is lost",
- "a grey hound with black ears is found at the railway station",
- "a white cat with long furry tail is found near the red square" };
- server.SetStopWords("is are was a an in the with near at");
- for (int i = 0; i < 3; ++i)
- {
- server.AddDocument(i, documents[i], DocumentStatus::ACTUAL, ratings);
- }
- const vector <Document> result_documents = server.FindTopDocuments("white cat long tail");
- //setprecision(6);
- //assert(result_documents[0].relevance == 0.462663);
- /*assert(result_documents[1].relevance == 0.0506831);*/
- }
- void TestFindWithStatus()
- {
- 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 });
- // Actual documents
- {
- const vector <Document> actual_documetns = search_server.FindTopDocuments("пушистый ухоженный кот"s);
- assert(actual_documetns.size() == 3);
- }
- // Banned documents
- {
- const vector <Document> banned_documetns = search_server.FindTopDocuments("пушистый ухоженный кот"s, DocumentStatus::BANNED);
- assert(banned_documetns.size() == 1);
- }
- }
- void TestPredicate()
- {
- 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 });
- //ACTUAL by default
- {
- const vector<Document> actual_by_default = search_server.FindTopDocuments("пушистый ухоженный кот"s);
- assert(actual_by_default.size() == 3);
- }
- //ACTUAL by default
- {
- const vector<Document> actual = search_server.FindTopDocuments("пушистый ухоженный кот"s, [](int document_id, DocumentStatus status, int rating) { return status == DocumentStatus::ACTUAL; });
- assert(actual.size() == 3);
- }
- //Even ids
- {
- const vector<Document> even = search_server.FindTopDocuments("пушистый ухоженный кот"s, [](int document_id, DocumentStatus status, int rating) { return document_id % 2 == 0; });
- assert(even.size() == 2);
- }
- }
- void TestMinusWords()
- {
- 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 });
- {
- const vector<Document> documents_without_minus_words = search_server.FindTopDocuments("пушистый ухоженный кот -ошейник "s);
- assert(documents_without_minus_words.size() == 2);
- }
- }
- void TestMatch()
- {
- 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 });
- // В первом элементе кортежа верните все плюс - слова запроса, содержащиеся в документе.
- {
- const auto [words, status] = search_server.MatchDocument("пушистый кот"s, 0);
- assert(words.size() == 1);
- }
- {
- const auto [words, status] = search_server.MatchDocument("пушистый кот"s, 1);
- assert(words.size() == 2);
- }
- {
- const auto [words, status] = search_server.MatchDocument("пушистый кот"s, 2);
- assert(words.empty());
- }
- {
- const auto [words, status] = search_server.MatchDocument("пушистый кот"s, 3);
- assert(words.empty());
- //assert(words.size(), 0); так не хочет
- }
- }
- void TestSort()
- {
- 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 });
- const vector<Document> documents = search_server.FindTopDocuments("пушистый ухоженный кот"s);
- assert(documents[0].id == 1);
- assert(documents[1].id == 0);
- assert(documents[2].id == 2);
- }
- // Функция TestSearchServer является точкой входа для запуска тестов
- void TestSearchServer() {
- TestExcludeStopWordsFromAddedDocumentContent();
- TestAverageRating();
- TestRelevance();
- TestFindWithStatus();
- TestPredicate();
- TestMinusWords();
- TestMatch();
- TestSort();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement