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 = {5, 2, 3};
- // Сначала убеждаемся, что поиск слова, не входящего в список стоп-слов,
- // находит нужный документ
- {
- SearchServer server;
- server.AddDocument(doc_id, content, 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, content, DocumentStatus::ACTUAL, ratings);
- assert(server.FindTopDocuments("in"s).empty());
- }
- }
- void TestMatchedDocuments()
- {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = {1, 2, 3};
- tuple<vector<string>, DocumentStatus> matched_documents;
- {
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- matched_documents = server.MatchDocument("cat in"s, doc_id);
- vector<string> s;
- s = get<0>(matched_documents);
- assert(s.size() == 2);
- //auto check = server.FindTopDocuments("the"s);
- assert(server.FindTopDocuments("-the"s).empty());
- }
- }
- void TestAverageRating()
- {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = {5, 2, 3};
- {
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- const auto found_docs = server.FindTopDocuments("in"s);
- const Document& doc0 = found_docs[0];
- assert(doc0.rating == 3);
- }
- }
- void TestAddedDocumentFind()
- {
- 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(found_docs.size() == 1);
- const Document& doc0 = found_docs[0];
- assert(doc0.id == doc_id);
- }
- }
- void TestMinusWordsIgnoredInSearchOutput() // нужно ли, если есть проверка в матчед документс?
- {
- 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(found_docs.size() == 1);
- const Document& doc0 = found_docs[0];
- assert(doc0.id == doc_id);
- {
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- assert(server.FindTopDocuments("-the"s).empty());
- }
- }
- }
- void TestStatus()
- {
- const int doc_id = 42;
- const string content = "cat in the city"s;
- const vector<int> ratings = {1, 2, 3};
- tuple<vector<string>, DocumentStatus> matched_documents;
- {
- SearchServer server;
- server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- matched_documents = server.MatchDocument("cat in"s, doc_id);
- DocumentStatus status;
- status = get<1>(matched_documents);
- assert(status == DocumentStatus::ACTUAL);
- }
- }
- void TestPredicateFilter()
- {
- 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, DocumentStatus::BANNED );
- assert(found_docs.size() == 0);
- const auto found_docs_1 = server.FindTopDocuments("in"s, [](int document_id, [[maybe_unused]] DocumentStatus status, [[maybe_unused]] int rating) { return document_id % 2 == 0; });
- assert(found_docs_1.size() == 1);
- }
- }
- void TestCorrectRelevanceCount() {
- // const int doc_id = 42;
- // const string content = "cat in the city"s;
- // const vector<int> ratings = {5, 2, 3};
- // const int doc_id_1 = 50;
- // const string content_1 = "cat in the box"s;
- // const vector<int> ratings_1 = {4, -6, 1};
- // const int doc_id_2 = 35;
- // const string content_2 = "dog at the cats station"s;
- // const vector<int> ratings_2 = {-10, 4, 2};
- // const int doc_id_3 = 20;
- // const string content_3 = "worm in the ass"s;
- // const vector<int> ratings_3 = {9};
- // server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
- // server.AddDocument(doc_id_1, content_1, DocumentStatus::ACTUAL, ratings_1);
- // server.AddDocument(doc_id_2, content_2, DocumentStatus::ACTUAL, ratings_2);
- // server.AddDocument(doc_id_3, content_3, DocumentStatus::BANNED, ratings_3);
- 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});
- const auto found_docs = server.FindTopDocuments("пушистый ухоженный кот"s);
- const Document& doc0 = found_docs.at(0);
- const Document& doc1 = found_docs.at(1);
- if (abs(found_docs.at(0).relevance - found_docs.at(1).relevance) < EPSILON)
- {
- assert (doc0.relevance > doc1.relevance || doc0.rating > doc1.rating);
- }
- //assert (abs(found_docs.at(0).relevance - found_docs.at(1).relevance) < EPSILON);
- }
- void TestSearchServer() {
- TestExcludeStopWordsFromAddedDocumentContent();
- TestAddedDocumentFind();
- TestMinusWordsIgnoredInSearchOutput();
- TestMatchedDocuments();
- TestAverageRating();
- TestStatus();
- TestPredicateFilter();
- TestCorrectRelevanceCount();
- cout << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement