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

feature_bucketer_test.cpp « generator_tests « generator - github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 39f22e8b01b9727cb004bca5ae89e9d7b3c0287a (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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#include "../../testing/testing.hpp"

#include "../feature_bucketer.hpp"

#include "../../indexer/feature.hpp"
#include "../../indexer/mercator.hpp"
#include "../../indexer/cell_id.hpp"
#include "../../indexer/classificator_loader.hpp"

#include "../../platform/platform.hpp"

#include "../../indexer/indexer_tests/feature_routine.hpp"

#include "../../base/stl_add.hpp"

namespace
{
  class PushBackFeatureDebugStringOutput
  {
  public:
    typedef map<string, vector<string> > * InitDataType;

    PushBackFeatureDebugStringOutput(string const & name, InitDataType const & initData)
      : m_pContainer(&((*initData)[name]))
    {
    }

    void operator() (FeatureBuilder1 const & fb)
    {
      FeatureType f;
      FeatureBuilder2Feature(
        static_cast<FeatureBuilder2 &>(const_cast<FeatureBuilder1 &>(fb)), f);
      m_pContainer->push_back(f.DebugString(0));
    }

  private:
    vector<string> * m_pContainer;
  };

  typedef feature::CellFeatureBucketer<
      PushBackFeatureDebugStringOutput,
      feature::SimpleFeatureClipper,
      MercatorBounds,
      RectId
  > FeatureBucketer;
}

UNIT_TEST(FeatureBucketerSmokeTest)
{
  // classificator is needed because inside bucketer we're use it in WorldMapGenerator
  // @TODO clean up or remove cell bucketer and replace with world countries bucketer
  classificator::Read(GetPlatform().GetReader("drawing_rules.bin"),
                      GetPlatform().GetReader("classificator.txt"),
                      GetPlatform().GetReader("visibility.txt"));

  map<string, vector<string> > out, expectedOut;
  FeatureBucketer bucketer(1, &out);

  FeatureBuilder2 fb;
  fb.AddPoint(m2::PointD(10, 10));
  fb.AddPoint(m2::PointD(20, 20));
  fb.AddType(0);
  fb.SetLinear();
  bucketer(fb);

  FeatureType f;
  FeatureBuilder2Feature(fb, f);
  expectedOut["3"].push_back(f.DebugString(0));
  TEST_EQUAL(out, expectedOut, ());

  vector<string> bucketNames;
  bucketer.GetBucketNames(MakeBackInsertFunctor(bucketNames));
  TEST_EQUAL(bucketNames, vector<string>(1, "3"), ());
}