From 2d5d6b9e58a844445b564d9a84ad7d16deb1876a Mon Sep 17 00:00:00 2001 From: vng Date: Tue, 10 May 2011 23:52:04 +0300 Subject: [PATCH] Add more tests for feature merging algo. --- .../generator_tests/feature_merger_test.cpp | 61 ++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/generator/generator_tests/feature_merger_test.cpp b/generator/generator_tests/feature_merger_test.cpp index 7d2f4172bd..adb26e7eb8 100644 --- a/generator/generator_tests/feature_merger_test.cpp +++ b/generator/generator_tests/feature_merger_test.cpp @@ -30,7 +30,7 @@ namespace }; } -UNIT_TEST(FeatureMerger_Smoke) +UNIT_TEST(FeatureMerger_MultipleTypes) { P arrPt[] = { P(0, 0), P(1, 1), P(2, 2), P(3, 3) }; size_t const count = ARRAY_SIZE(arrPt)-1; @@ -72,3 +72,62 @@ UNIT_TEST(FeatureMerger_Smoke) emitter.Check(3, 1); emitter.Check(4, 1); } + +UNIT_TEST(FeatureMerger_Branches) +{ + // Try to unite next configuration + // o + // /\ + // o--o--o--o + // \/ + // o + + vector vF; + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-2, 0)); + vF.back().AddPoint(P(-1, 0)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-1, 0)); + vF.back().AddPoint(P(0, 1)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-1, 0)); + vF.back().AddPoint(P(0, 0)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(-1, 0)); + vF.back().AddPoint(P(0, -1)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(0, 1)); + vF.back().AddPoint(P(1, 0)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(0, 0)); + vF.back().AddPoint(P(1, 0)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(0, -1)); + vF.back().AddPoint(P(1, 0)); + + vF.push_back(FeatureBuilder1()); + vF.back().AddPoint(P(1, 0)); + vF.back().AddPoint(P(2, 0)); + + FeatureMergeProcessor processor(30); + + 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(), 2, ()); +}