diff options
author | vng <viktor.govako@gmail.com> | 2011-08-23 13:20:49 +0400 |
---|---|---|
committer | Alex Zolotarev <alex@maps.me> | 2015-09-23 01:22:13 +0300 |
commit | f8ca81ca385d3433857596c24aeb94a2561c5db3 (patch) | |
tree | 56b8d08dc86449464b2a09e086449545c59dc387 /generator/generator_tests/feature_merger_test.cpp | |
parent | 92007ca267f9538533651efef0a42c47298a2c0a (diff) |
Fix features merging when they have rounds.
Diffstat (limited to 'generator/generator_tests/feature_merger_test.cpp')
-rw-r--r-- | generator/generator_tests/feature_merger_test.cpp | 52 |
1 files changed, 50 insertions, 2 deletions
diff --git a/generator/generator_tests/feature_merger_test.cpp b/generator/generator_tests/feature_merger_test.cpp index 5fa5d5417d..a3bc7b8385 100644 --- a/generator/generator_tests/feature_merger_test.cpp +++ b/generator/generator_tests/feature_merger_test.cpp @@ -56,7 +56,7 @@ UNIT_TEST(FeatureMerger_MultipleTypes) arrF[1].AddType(4); arrF[2].AddType(4); - FeatureMergeProcessor processor(30); + FeatureMergeProcessor processor(POINT_COORD_BITS); for (size_t i = 0; i < count; ++i) processor(arrF[i]); @@ -117,7 +117,7 @@ UNIT_TEST(FeatureMerger_Branches) vF.back().AddPoint(P(1, 0)); vF.back().AddPoint(P(2, 0)); - FeatureMergeProcessor processor(30); + FeatureMergeProcessor processor(POINT_COORD_BITS); for (size_t i = 0; i < vF.size(); ++i) { @@ -132,3 +132,51 @@ UNIT_TEST(FeatureMerger_Branches) TEST_LESS_OR_EQUAL(emitter.GetSize(), 2, ()); } + +UNIT_TEST(FeatureMerger_Rounds) +{ + vector<FeatureBuilder1> vF; + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-10, 0)); + vF.back().AddPoint(P(-5, 0)); + + // make first round feature + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-4, 1)); + vF.back().AddPoint(P(-3, 0)); + vF.back().AddPoint(P(-4, -1)); + vF.back().AddPoint(P(-5, 0)); + vF.back().AddPoint(P(-4, 1)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-3, 0)); + vF.back().AddPoint(P(3, 0)); + + // make second round feature + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(4, -1)); + vF.back().AddPoint(P(3, 0)); + vF.back().AddPoint(P(4, 1)); + vF.back().AddPoint(P(5, 0)); + vF.back().AddPoint(P(4, -1)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(5, 0)); + vF.back().AddPoint(P(10, 0)); + + FeatureMergeProcessor processor(POINT_COORD_BITS); + + for (size_t i = 0; i < vF.size(); ++i) + { + vF[i].SetLinear(); + vF[i].AddType(0); + + processor(vF[i]); + } + + VectorEmitter emitter; + processor.DoMerge(emitter); + + TEST_EQUAL(emitter.GetSize(), 1, ()); +} |