Welcome to mirror list, hosted at ThFree Co, Russian Federation.

test_search_request.cpp « search_integration_tests « search - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: ee879cf58287b94e68ab3caab513f90bc820d906 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "search/search_integration_tests/test_search_request.hpp"

#include "search/search_integration_tests/test_search_engine.hpp"
#include "search/params.hpp"

#include "base/logging.hpp"

TestSearchRequest::TestSearchRequest(TestSearchEngine & engine, string const & query,
                                     string const & locale, m2::RectD const & viewport)
    : m_done(false)
{
  search::SearchParams params;
  params.m_query = query;
  params.m_inputLocale = locale;
  params.m_callback = [this](search::Results const & results)
  {
    Done(results);
  };
  params.SetSearchMode(search::SearchParams::IN_VIEWPORT_ONLY);
  CHECK(engine.Search(params, viewport), ("Can't run search."));
}

void TestSearchRequest::Wait()
{
  unique_lock<mutex> lock(m_mu);
  m_cv.wait(lock, [this]()
  {
    return m_done;
  });
}

vector<search::Result> const & TestSearchRequest::Results() const
{
  lock_guard<mutex> lock(m_mu);
  CHECK(m_done, ("Results can be get only when request will be completed."));
  return m_results;
}

void TestSearchRequest::Done(search::Results const & results)
{
  lock_guard<mutex> lock(m_mu);
  if (results.IsEndMarker())
  {
    m_done = true;
    m_cv.notify_one();
  }
  else
  {
    m_results.assign(results.Begin(), results.End());
  }
}