Advertisement
Alaricy

тестировщик на макросах

Dec 2nd, 2022
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.63 KB | None | 0 0
  1. void TestExcludeStopWordsFromAddedDocumentContent() {
  2.     const int doc_id = 42;
  3.     const string content = "cat in the city"s;
  4.     const vector<int> ratings = { 1, 2, 3 };
  5.     {
  6.         SearchServer server;
  7.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  8.         const auto found_docs = server.FindTopDocuments("in"s);
  9.         ASSERT_EQUAL(found_docs.size(), 1u);
  10.         const Document& doc0 = found_docs[0];
  11.         ASSERT_EQUAL(doc0.id, doc_id);
  12.     }
  13.  
  14.     {
  15.         SearchServer server;
  16.         server.SetStopWords("in the"s);
  17.         server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  18.         ASSERT_HINT(server.FindTopDocuments("in"s).empty(),
  19.             "Stop words must be excluded from documents"s);
  20.     }
  21. }
  22.  
  23. void TestMinusWordsFromAddedDocumentContent() {
  24.     const int doc_id = 42;
  25.     const string content = "cat in the city"s;
  26.     const vector<int> ratings = { 1, 2, 3 };
  27.     SearchServer server;
  28.     server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  29.     ASSERT_HINT(server.FindTopDocuments("cat in the -city"s).empty(), "Minus words must exclude the document"s);
  30.  
  31. }
  32.  
  33. void TestMatching() {
  34.     const int doc_id = 42;
  35.     const string content = "cat in the city"s;
  36.     const vector<int> ratings = { 1, 2, 3 };
  37.     SearchServer server;
  38.     server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  39.     tuple<vector<string>, DocumentStatus> match = server.MatchDocument("cat in the city"s, 42);
  40.     vector<string> answer = { "cat"s, "city"s, "in"s, "the"s };
  41.     vector<string> totest = get<0>(match);
  42.     ASSERT_EQUAL(answer, totest);
  43. }
  44.  
  45.  
  46. void TestMatchingWithMinus() {
  47.     const int doc_id = 42;
  48.     const string content = "cat in the city"s;
  49.     const vector<int> ratings = { 1, 2, 3 };
  50.     SearchServer server;
  51.     server.AddDocument(doc_id, content, DocumentStatus::ACTUAL, ratings);
  52.     tuple<vector<string>, DocumentStatus> match = server.MatchDocument("cat in the -city"s, 42);
  53.     vector<string> totest = get<0>(match);
  54.     ASSERT(totest.empty());
  55. }
  56.  
  57. void RelevanceSortingTest() {
  58.     SearchServer server;
  59.     server.AddDocument(1, "Привет прогулка друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
  60.     server.AddDocument(2, "Привет привет друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
  61.     server.AddDocument(3, "Привет привет привет дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
  62.     server.AddDocument(4, "Привет привет привет привет"s, DocumentStatus::ACTUAL, { 1,2,3 });
  63.     server.AddDocument(5, "Трактор прогулка друг дрова"s, DocumentStatus::ACTUAL, { 1,2,3 });
  64.  
  65.     vector<int> relevances;
  66.     for (const Document& document : server.FindTopDocuments("Привет привет"s))
  67.     {
  68.         relevances.push_back(document.id);
  69.     }
  70.     vector <int> answer = { 4,3,2,1 };
  71.     ASSERT_EQUAL(relevances, answer);
  72. }
  73.  
  74. void RatingTest() {
  75.     SearchServer server;
  76.     server.AddDocument(1, "Привет прогулка друг дрова"s, DocumentStatus::ACTUAL, { 5,7,8,9,12,20,100,1,2,5,4,6,7,1,-3,-5,-1 });
  77.     //cout << "rating = "s << server.FindTopDocuments("Привет привет"s)[0].rating << " }"s << endl;
  78.     ASSERT_EQUAL((server.FindTopDocuments("Привет привет"s)[0].rating), 10);
  79. }
  80.  
  81. void PredicatTest() {
  82.     SearchServer server;
  83.     server.SetStopWords("и в на"s);
  84.     server.AddDocument(0, "белый кот и модный ошейник"s, DocumentStatus::ACTUAL, { 8, -3 });
  85.     server.AddDocument(1, "пушистый кот пушистый хвост"s, DocumentStatus::ACTUAL, { 7, 2, 7 });
  86.     server.AddDocument(2, "ухоженный пёс выразительные глаза"s, DocumentStatus::ACTUAL, { 5, -12, 2, 1 });
  87.     server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
  88.     int id1 = server.FindTopDocuments("пушистый ухоженный кот"s)[0].id;
  89.     int id2 = server.FindTopDocuments("пушистый ухоженный кот"s, DocumentStatus::BANNED)[0].id;
  90.     int id3 = server.FindTopDocuments("пушистый ухоженный кот"s, [](int document_id, DocumentStatus status, int rating) { return document_id % 2 == 0; })[0].id;
  91.     ASSERT_EQUAL(id1, 1);
  92.     ASSERT_EQUAL(id2, 3);
  93.     ASSERT_EQUAL(id3, 0);
  94. }
  95.  
  96. void StatusTest() {
  97.     SearchServer server;
  98.     server.AddDocument(0, "ухоженный скворец евгений"s, DocumentStatus::ACTUAL, { 9 });
  99.     server.AddDocument(1, "ухоженный скворец евгений"s, DocumentStatus::IRRELEVANT, { 9 });
  100.     server.AddDocument(2, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
  101.     server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::REMOVED, { 9 });
  102.     int id1 = server.FindTopDocuments("евгений - свинья"s, DocumentStatus::BANNED)[0].id;
  103.     int id2 = server.FindTopDocuments("евгений - скворец"s, DocumentStatus::ACTUAL)[0].id;
  104.     int id3 = server.FindTopDocuments("евгений - яйцо"s, DocumentStatus::REMOVED)[0].id;
  105.     int id4 = server.FindTopDocuments("евгений - полушлюз"s, DocumentStatus::IRRELEVANT)[0].id;
  106.     ASSERT_EQUAL(id1, 2);
  107.     ASSERT_EQUAL(id2, 0);
  108.     ASSERT_EQUAL(id3, 3);
  109.     ASSERT_EQUAL(id4, 1);
  110. }
  111.  
  112. void RelevanceTest() {
  113.     SearchServer search_server;
  114.     search_server.SetStopWords("и в на"s);
  115.     search_server.AddDocument(0, "белый кот и модный ошейник"s, DocumentStatus::ACTUAL, { 8, -3 });
  116.     search_server.AddDocument(1, "пушистый кот пушистый хвост"s, DocumentStatus::ACTUAL, { 7, 2, 7 });
  117.     search_server.AddDocument(2, "ухоженный пёс выразительные глаза"s, DocumentStatus::ACTUAL, { 5, -12, 2, 1 });
  118.     search_server.AddDocument(3, "ухоженный скворец евгений"s, DocumentStatus::BANNED, { 9 });
  119.     double rel = search_server.FindTopDocuments("пушистый ухоженный кот"s)[0].relevance;
  120.     ASSERT_EQUAL(rel, 0.8664339756999316);
  121. }
  122.  
  123.  
  124. void TestSearchServer() {
  125.     RUN_TEST(TestExcludeStopWordsFromAddedDocumentContent);
  126.     RUN_TEST(TestMinusWordsFromAddedDocumentContent);
  127.     //
  128.     RUN_TEST(TestMatching);
  129.     RUN_TEST(TestMatchingWithMinus);
  130.     //
  131.     RUN_TEST(RelevanceSortingTest);
  132.     RUN_TEST(RatingTest);
  133.     RUN_TEST(PredicatTest);
  134.     RUN_TEST(StatusTest);
  135.     RUN_TEST(RelevanceTest);
  136.  
  137. }
  138. // --------- Окончание модульных тестов поисковой системы -----------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement