Advertisement
Evgenistan

Untitled

Aug 3rd, 2022 (edited)
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.69 KB | None | 0 0
  1. // -------- Начало модульных тестов поисковой системы ----------
  2. void TestExcludeStopWordsFromAddedDocumentContent() {
  3.     const int doc_id = 42;
  4.     const string content = "cat in the city"s;
  5.     const vector<int> ratings = {5, 2, 3};
  6.     // Сначала убеждаемся, что поиск слова, не входящего в список стоп-слов,
  7.     // находит нужный документ
  8.     {
  9.         SearchServer server;
  10.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  11.         const auto found_docs = server.FindTopDocuments("in"s);
  12.         assert(found_docs.size() == 1);
  13.         const Document& doc0 = found_docs[0];
  14.         assert(doc0.id == doc_id);
  15.     }
  16.  
  17.     // Затем убеждаемся, что поиск этого же слова, входящего в список стоп-слов,
  18.     // возвращает пустой результат
  19.     {
  20.         SearchServer server;
  21.         server.SetStopWords("in the"s);
  22.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  23.         assert(server.FindTopDocuments("in"s).empty());
  24.     }
  25. }
  26.  
  27. void TestMatchedDocuments()
  28. {
  29.     const int doc_id = 42;
  30.     const string content = "cat in the city"s;
  31.     const vector<int> ratings = {1, 2, 3};
  32.     tuple<vector<string>, DocumentStatus> matched_documents;
  33.  
  34.     {
  35.         SearchServer server;
  36.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  37.         matched_documents = server.MatchDocument("cat in"s, doc_id);
  38.         vector<string> s;
  39.         s = get<0>(matched_documents);
  40.         assert(s.size() == 2);
  41.         //auto check = server.FindTopDocuments("the"s);
  42.         assert(server.FindTopDocuments("-the"s).empty());
  43.     }
  44. }
  45.  
  46. void TestAverageRating()
  47. {
  48.     const int doc_id = 42;
  49.     const string content = "cat in the city"s;
  50.     const vector<int> ratings = {5, 2, 3};
  51.     {
  52.         SearchServer server;
  53.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  54.         const auto found_docs = server.FindTopDocuments("in"s);
  55.         const Document& doc0 = found_docs[0];
  56.         assert(doc0.rating == 3);
  57.     }
  58. }
  59. void TestAddedDocumentFind()
  60. {
  61.     const int doc_id = 42;
  62.     const string content = "cat in the city"s;
  63.     const vector<int> ratings = {1, 2, 3};
  64.     {
  65.         SearchServer server;
  66.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  67.         const auto found_docs = server.FindTopDocuments("in"s);
  68.         assert(found_docs.size() == 1);
  69.         const Document& doc0 = found_docs[0];
  70.         assert(doc0.id == doc_id);
  71.     }
  72. }
  73.  
  74. void TestMinusWordsIgnoredInSearchOutput() // нужно ли, если есть проверка в матчед документс?
  75. {
  76.     const int doc_id = 42;
  77.     const string content = "cat in the city"s;
  78.     const vector<int> ratings = {1, 2, 3};
  79.     {
  80.         SearchServer server;
  81.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  82.         const auto found_docs = server.FindTopDocuments("in"s);
  83.         assert(found_docs.size() == 1);
  84.         const Document& doc0 = found_docs[0];
  85.         assert(doc0.id == doc_id);
  86.     {
  87.         SearchServer server;
  88.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  89.         assert(server.FindTopDocuments("-the"s).empty());
  90.     }
  91.     }
  92. }
  93. void TestStatus()
  94. {
  95.     const int doc_id = 42;
  96.     const string content = "cat in the city"s;
  97.     const vector<int> ratings = {1, 2, 3};
  98.     tuple<vector<string>, DocumentStatus> matched_documents;
  99.  
  100.     {
  101.     SearchServer server;
  102.     server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  103.     matched_documents = server.MatchDocument("cat in"s, doc_id);
  104.     DocumentStatus status;
  105.     status = get<1>(matched_documents);
  106.     assert(status == DocumentStatus::ACTUAL);
  107.     }
  108. }
  109. void TestPredicateFilter()
  110. {
  111.     const int doc_id = 42;
  112.     const string content = "cat in the city"s;
  113.     const vector<int> ratings = {1, 2, 3};
  114.     {
  115.     SearchServer server;
  116.     server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  117.     const auto found_docs = server.FindTopDocuments("in"s, DocumentStatus::BANNED );
  118.     assert(found_docs.size() == 0);
  119.  
  120.     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; });
  121.     assert(found_docs_1.size() == 1);
  122.     }
  123.  
  124. }
  125.  
  126. void TestCorrectRelevanceCount() {
  127. //    const int doc_id = 42;
  128. //    const string content = "cat in the city"s;
  129. //    const vector<int> ratings = {5, 2, 3};
  130. //    const int doc_id_1 = 50;
  131. //    const string content_1 = "cat in the box"s;
  132. //    const vector<int> ratings_1 = {4, -6, 1};
  133. //    const int doc_id_2 = 35;
  134. //    const string content_2 = "dog at the cats station"s;
  135. //    const vector<int> ratings_2 = {-10, 4, 2};
  136. //    const int doc_id_3 = 20;
  137. //    const string content_3 = "worm in the ass"s;
  138. //    const vector<int> ratings_3 = {9};
  139.  
  140. //    server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  141. //    server.AddDocument(doc_id_1, content_1, DocumentStatus::ACTUAL, ratings_1);
  142. //    server.AddDocument(doc_id_2, content_2, DocumentStatus::ACTUAL, ratings_2);
  143. //    server.AddDocument(doc_id_3, content_3, DocumentStatus::BANNED, ratings_3);
  144.     SearchServer server;
  145.     server.SetStopWords("и в на"s);
  146.  
  147.     server.AddDocument(0, "белый кот и модный ошейник"s,        DocumentStatus::ACTUAL, {8, -3});
  148.     server.AddDocument(1, "пушистый кот пушистый хвост"s,       DocumentStatus::ACTUAL, {7, 2, 7});
  149.     server.AddDocument(2, "ухоженный пёс выразительные глаза"s, DocumentStatus::ACTUAL, {5, -12, 2, 1});
  150.     server.AddDocument(3, "ухоженный скворец евгений"s,         DocumentStatus::BANNED, {9});
  151.     const auto found_docs = server.FindTopDocuments("пушистый ухоженный кот"s);
  152.     const Document& doc0 = found_docs.at(0);
  153.     const Document& doc1 = found_docs.at(1);
  154.     if (abs(found_docs.at(0).relevance - found_docs.at(1).relevance) < EPSILON)
  155.     {
  156.         assert (doc0.relevance > doc1.relevance || doc0.rating > doc1.rating);
  157.     }
  158.     //assert (abs(found_docs.at(0).relevance - found_docs.at(1).relevance) < EPSILON);
  159.  
  160. }
  161. void TestSearchServer() {
  162.     TestExcludeStopWordsFromAddedDocumentContent();
  163.  
  164.     TestAddedDocumentFind();
  165.     TestMinusWordsIgnoredInSearchOutput();
  166.     TestMatchedDocuments();
  167.     TestAverageRating();
  168.     TestStatus();
  169.     TestPredicateFilter();
  170.     TestCorrectRelevanceCount();
  171.  
  172.     cout << endl;
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement