diff options
author | vng <viktor.govako@gmail.com> | 2011-05-10 22:00:50 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:17:10 +0300 |
commit | 8eb310f676e1a468ed9b11e194eb57f0fc4e053a (patch) | |
tree | f92aa7f0f92fa1034f033553f3e7d800da5ee7ce /generator/generator_tests | |
parent | 9b40c249a804efafa215312a2c9bab315a4884ca (diff) |
Refactoring of feature merging routine.
Diffstat (limited to 'generator/generator_tests')
-rw-r--r-- | generator/generator_tests/feature_bucketer_test.cpp | 2 | ||||
-rw-r--r-- | generator/generator_tests/feature_merger_test.cpp | 74 | ||||
-rw-r--r-- | generator/generator_tests/generator_tests.pro | 1 |
3 files changed, 76 insertions, 1 deletions
diff --git a/generator/generator_tests/feature_bucketer_test.cpp b/generator/generator_tests/feature_bucketer_test.cpp index 4cdbf527aa..4341828010 100644 --- a/generator/generator_tests/feature_bucketer_test.cpp +++ b/generator/generator_tests/feature_bucketer_test.cpp @@ -59,7 +59,7 @@ UNIT_TEST(FeatureBucketerSmokeTest) FeatureBuilder2 fb; fb.AddPoint(m2::PointD(10, 10)); fb.AddPoint(m2::PointD(20, 20)); - fb.SetType(0); + fb.AddType(0); fb.SetLinear(); bucketer(fb); diff --git a/generator/generator_tests/feature_merger_test.cpp b/generator/generator_tests/feature_merger_test.cpp new file mode 100644 index 0000000000..7d2f4172bd --- /dev/null +++ b/generator/generator_tests/feature_merger_test.cpp @@ -0,0 +1,74 @@ +#include "../../testing/testing.hpp" + +#include "../feature_merger.hpp" + + +namespace +{ + typedef m2::PointD P; + + class VectorEmitter : public FeatureEmitterIFace + { + vector<FeatureBuilder1> m_vec; + public: + virtual void operator() (FeatureBuilder1 const & fb) + { + m_vec.push_back(fb); + } + + size_t GetSize() const { return m_vec.size(); } + + void Check(uint32_t type, size_t count) const + { + size_t test = 0; + for (size_t i = 0; i < m_vec.size(); ++i) + if (m_vec[i].HasType(type)) + ++test; + + TEST_EQUAL(test, count, ()); + } + }; +} + +UNIT_TEST(FeatureMerger_Smoke) +{ + P arrPt[] = { P(0, 0), P(1, 1), P(2, 2), P(3, 3) }; + size_t const count = ARRAY_SIZE(arrPt)-1; + + FeatureBuilder1 arrF[count]; + + for (size_t i = 0; i < count; ++i) + { + arrF[i].SetLinear(); + arrF[i].AddPoint(arrPt[i]); + arrF[i].AddPoint(arrPt[i+1]); + + arrF[i].AddType(0); + } + + arrF[0].AddType(1); + arrF[1].AddType(1); + arrF[0].AddType(2); + arrF[1].AddType(2); + + arrF[1].AddType(3); + arrF[2].AddType(3); + arrF[1].AddType(4); + arrF[2].AddType(4); + + FeatureMergeProcessor processor(30); + + for (size_t i = 0; i < count; ++i) + processor(arrF[i]); + + VectorEmitter emitter; + processor.DoMerge(emitter); + + TEST_EQUAL(emitter.GetSize(), 3, ()); + + emitter.Check(0, 1); + emitter.Check(1, 1); + emitter.Check(2, 1); + emitter.Check(3, 1); + emitter.Check(4, 1); +} diff --git a/generator/generator_tests/generator_tests.pro b/generator/generator_tests/generator_tests.pro index 4f0ae4d352..73c1c3e7bf 100644 --- a/generator/generator_tests/generator_tests.pro +++ b/generator/generator_tests/generator_tests.pro @@ -25,3 +25,4 @@ SOURCES += \ ../../indexer/indexer_tests/feature_routine.cpp \ feature_bucketer_test.cpp \ osm_parser_test.cpp \ + feature_merger_test.cpp \ |