diff options
Diffstat (limited to 'test/api')
-rw-r--r-- | test/api/annotations.cpp | 96 |
1 files changed, 68 insertions, 28 deletions
diff --git a/test/api/annotations.cpp b/test/api/annotations.cpp index a9ebb4ab01..a00a449a6d 100644 --- a/test/api/annotations.cpp +++ b/test/api/annotations.cpp @@ -14,9 +14,19 @@ #include <future> #include <vector> -TEST(Annotations, PointAnnotation) { - using namespace mbgl; +using namespace mbgl; + +std::string renderPNG(Map& map) { + std::promise<std::unique_ptr<const StillImage>> promise; + map.renderStill([&](std::exception_ptr, std::unique_ptr<const StillImage> image) { + promise.set_value(std::move(image)); + }); + auto result = promise.get_future().get(); + return util::compress_png(result->width, result->height, result->pixels.get()); +} + +TEST(Annotations, PointAnnotation) { auto display = std::make_shared<mbgl::HeadlessDisplay>(); HeadlessView view(display, 1); DefaultFileSource fileSource(nullptr); @@ -25,19 +35,10 @@ TEST(Annotations, PointAnnotation) { map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); map.addPointAnnotation(PointAnnotation({ 0, 0 }, "default_marker")); - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&promise](std::exception_ptr, std::unique_ptr<const StillImage> image) { - promise.set_value(std::move(image)); - }); - - auto result = promise.get_future().get(); - const std::string png = util::compress_png(result->width, result->height, result->pixels.get()); - util::write_file("test/output/point_annotation.png", png); + util::write_file("test/output/point_annotation.png", renderPNG(map)); } TEST(Annotations, LineAnnotation) { - using namespace mbgl; - auto display = std::make_shared<mbgl::HeadlessDisplay>(); HeadlessView view(display, 1); DefaultFileSource fileSource(nullptr); @@ -56,25 +57,55 @@ TEST(Annotations, LineAnnotation) { map.addShapeAnnotation(ShapeAnnotation(segments, styleProperties)); - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&promise](std::exception_ptr, std::unique_ptr<const StillImage> image) { - promise.set_value(std::move(image)); - }); - - auto result = promise.get_future().get(); - const std::string png = util::compress_png(result->width, result->height, result->pixels.get()); - util::write_file("test/output/line_annotation.png", png); + util::write_file("test/output/line_annotation.png", renderPNG(map)); } TEST(Annotations, FillAnnotation) { - using namespace mbgl; + auto display = std::make_shared<mbgl::HeadlessDisplay>(); + HeadlessView view(display, 1); + DefaultFileSource fileSource(nullptr); + + Map map(view, fileSource, MapMode::Still); + map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + + AnnotationSegments segments = {{ {{ { 0, 0 }, { 0, 45 }, { 45, 45 }, { 45, 0 } }} }}; + + FillProperties fillProperties; + fillProperties.fill_color = {{ 255, 0, 0, 1 }}; + + StyleProperties styleProperties; + styleProperties.set<FillProperties>(fillProperties); + + map.addShapeAnnotation(ShapeAnnotation(segments, styleProperties)); + + util::write_file("test/output/fill_annotation.png", renderPNG(map)); +} +TEST(Annotations, AddMultiple) { auto display = std::make_shared<mbgl::HeadlessDisplay>(); HeadlessView view(display, 1); DefaultFileSource fileSource(nullptr); Map map(view, fileSource, MapMode::Still); map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + map.addPointAnnotation(PointAnnotation({ 0, -20 }, "default_marker")); + + renderPNG(map); + + map.addPointAnnotation(PointAnnotation({ 0, 20 }, "default_marker")); + + util::write_file("test/output/add_multiple.png", renderPNG(map)); +} + +TEST(Annotations, NonImmediateAdd) { + auto display = std::make_shared<mbgl::HeadlessDisplay>(); + HeadlessView view(display, 1); + DefaultFileSource fileSource(nullptr); + + Map map(view, fileSource, MapMode::Still); + map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + + renderPNG(map); AnnotationSegments segments = {{ {{ { 0, 0 }, { 0, 45 }, { 45, 45 }, { 45, 0 } }} }}; @@ -86,12 +117,21 @@ TEST(Annotations, FillAnnotation) { map.addShapeAnnotation(ShapeAnnotation(segments, styleProperties)); - std::promise<std::unique_ptr<const StillImage>> promise; - map.renderStill([&promise](std::exception_ptr, std::unique_ptr<const StillImage> image) { - promise.set_value(std::move(image)); - }); + util::write_file("test/output/non_immediate_add.png", renderPNG(map)); +} - auto result = promise.get_future().get(); - const std::string png = util::compress_png(result->width, result->height, result->pixels.get()); - util::write_file("test/output/fill_annotation.png", png); +TEST(Annotations, SwitchStyle) { + auto display = std::make_shared<mbgl::HeadlessDisplay>(); + HeadlessView view(display, 1); + DefaultFileSource fileSource(nullptr); + + Map map(view, fileSource, MapMode::Still); + map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + map.addPointAnnotation(PointAnnotation({ 0, 0 }, "default_marker")); + + renderPNG(map); + + map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"), ""); + + util::write_file("test/output/switch_style.png", renderPNG(map)); } |