diff options
author | Ansis Brammanis <brammanis@gmail.com> | 2015-01-13 22:29:28 -0500 |
---|---|---|
committer | Ansis Brammanis <brammanis@gmail.com> | 2015-01-13 22:29:28 -0500 |
commit | 4fbb7d614c93ac2d0146f2bf9c8e94fd2720b1ba (patch) | |
tree | 928be85aedc3659fb6aefe226e1312514751e9de /test | |
parent | b54c0e24479c0b7b3d21cd30a24cc5b6fb2e2102 (diff) | |
download | qtlocation-mapboxgl-4fbb7d614c93ac2d0146f2bf9c8e94fd2720b1ba.tar.gz |
port tests for mergeLines
js: 867b7f4be01126663df609756049515a41e700d1
Diffstat (limited to 'test')
-rw-r--r-- | test/merge_lines.cpp | 73 | ||||
-rw-r--r-- | test/test.gyp | 20 |
2 files changed, 93 insertions, 0 deletions
diff --git a/test/merge_lines.cpp b/test/merge_lines.cpp new file mode 100644 index 0000000000..3c887105fa --- /dev/null +++ b/test/merge_lines.cpp @@ -0,0 +1,73 @@ +#include "gtest/gtest.h" + +#include <mbgl/util/merge_lines.hpp> + + +TEST(mergeLines, mergeLines) { + + std::u32string a = U"a"; + std::u32string b = U"b"; + + // merges lines with the same text + std::vector<mbgl::SymbolFeature> input1 = { + { {{{0, 0}, {1, 0}, {2, 0}}}, a, "" }, + { {{{4, 0}, {5, 0}, {6, 0}}}, b, "" }, + { {{{8, 0}, {9, 0}}}, a, "" }, + { {{{2, 0}, {3, 0}, {4, 0}}}, a, "" }, + { {{{6, 0}, {7, 0}, {8, 0}}}, a, "" }, + { {{{5, 0}, {6, 0}}}, a, "" } + }; + + std::vector<mbgl::SymbolFeature> expected1 = { + { {{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}}}, a, "" }, + { {{{4, 0}, {5, 0}, {6, 0}}}, b, "" }, + { {{{5, 0}, {6, 0}, {7, 0}, {8, 0}, {9, 0}}}, a, "" }, + { {{}}, a, "" }, + { {{}}, a, "" }, + { {{}}, a, "" } + }; + + mbgl::util::mergeLines(input1); + + for (int i = 0; i < 6; i++) { + EXPECT_EQ(input1[i].geometry, expected1[i].geometry); + } + + // mergeLines handles merge from both ends + std::vector<mbgl::SymbolFeature> input2 = { + { {{{0, 0}, {1, 0}, {2, 0}}}, a, "" }, + { {{{4, 0}, {5, 0}, {6, 0}}}, a, "" }, + { {{{2, 0}, {3, 0}, {4, 0}}}, a, "" } + }; + + std::vector<mbgl::SymbolFeature> expected2 = { + { {{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {5, 0}, {6, 0}}}, a, "" }, + { {{}}, a, "" }, + { {{}}, a, "" } + }; + + mbgl::util::mergeLines(input2); + + for (int i = 0; i < 3; i++) { + EXPECT_EQ(input2[i].geometry, expected2[i].geometry); + } + + // mergeLines handles circular lines + std::vector<mbgl::SymbolFeature> input3 = { + { {{{0, 0}, {1, 0}, {2, 0}}}, a, "" }, + { {{{2, 0}, {3, 0}, {4, 0}}}, a, "" }, + { {{{4, 0}, {0, 0}}}, a, "" } + }; + + std::vector<mbgl::SymbolFeature> expected3 = { + { {{{0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0}, {0, 0}}}, a, "" }, + { {{}}, a, "" }, + { {{}}, a, "" } + }; + + mbgl::util::mergeLines(input3); + + for (int i = 0; i < 3; i++) { + EXPECT_EQ(input3[i].geometry, expected3[i].geometry); + } +} diff --git a/test/test.gyp b/test/test.gyp index e33cf36894..dd24f90844 100644 --- a/test/test.gyp +++ b/test/test.gyp @@ -167,6 +167,25 @@ }] ] }, + { 'target_name': 'merge_lines', + 'product_name': 'test_merge_lines', + 'type': 'executable', + 'sources': [ + './main.cpp', + './merge_lines.cpp', + ], + 'dependencies': [ + '../deps/gtest/gtest.gyp:gtest', + '../mapboxgl.gyp:mbgl-standalone', + ], + 'include_dirs': [ '../src' ], + 'conditions': [ + ['OS == "mac"', { 'xcode_settings': { 'OTHER_LDFLAGS': [ '<@(ldflags)' ] } + }, { + 'libraries': [ '<@(ldflags)' ], + }] + ] + }, { 'target_name': 'headless', 'product_name': 'test_headless', 'type': 'executable', @@ -236,6 +255,7 @@ 'variant', 'tile', 'functions', + 'merge_lines', 'headless', 'style_parser', 'comparisons', |