#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace mbgl; using namespace mbgl::style; namespace { template void testClone(Params... params) { auto layer = std::make_unique(std::forward(params)...); auto clone = layer->baseImpl->clone(); EXPECT_NE(layer.get(), clone.get()); EXPECT_TRUE(reinterpret_cast(clone->baseImpl.get())); layer->impl->id = "test"; EXPECT_EQ("test", layer->baseImpl->clone()->getID()); } const auto color = PropertyValue {{ 1, 0, 0, 1 }}; const auto opacity = PropertyValue { 1.0f }; const auto radius = PropertyValue { 1.0f }; const auto blur = PropertyValue { 1.0f }; const auto pattern = PropertyValue { "foo" }; const auto antialias = PropertyValue { false }; const auto translate = PropertyValue> {{{ 0, 0 }}}; const auto translateAnchor = PropertyValue { TranslateAnchorType::Map }; const auto lineCap = PropertyValue { LineCapType::Round }; const auto lineJoin = PropertyValue { LineJoinType::Miter }; const auto miterLimit = PropertyValue { 1.0f }; const auto roundLimit = PropertyValue { 1.0f }; const auto width = PropertyValue { 1.0f }; const auto gapWidth = PropertyValue { 1.0f }; const auto offset = PropertyValue { 1.0f }; const auto dashArray = PropertyValue> {{}}; const auto hueRotate = PropertyValue { 1.0f }; const auto brightness = PropertyValue { 1.0f }; const auto saturation = PropertyValue { 1.0f }; const auto contrast = PropertyValue { 1.0f }; const auto duration = PropertyValue { 1.0f }; } // namespace TEST(Layer, Clone) { testClone("background"); testClone("circle", "source"); testClone("custom", [](void*){}, [](void*, const CustomLayerRenderParameters&){}, [](void*){}, nullptr), testClone("fill", "source"); testClone("line", "source"); testClone("raster", "source"); testClone("symbol", "source"); } TEST(Layer, BackgroundProperties) { auto layer = std::make_unique("background"); EXPECT_TRUE(layer->is()); // Paint properties layer->setBackgroundColor(color); EXPECT_EQ(layer->getBackgroundColor().asConstant(), color.asConstant()); layer->setBackgroundOpacity(opacity); EXPECT_EQ(layer->getBackgroundOpacity().asConstant(), opacity.asConstant()); layer->setBackgroundPattern(pattern); EXPECT_EQ(layer->getBackgroundPattern().asConstant(), pattern.asConstant()); } TEST(Layer, CircleProperties) { auto layer = std::make_unique("circle", "source"); EXPECT_TRUE(layer->is()); // Paint properties layer->setCircleColor(color); EXPECT_EQ(layer->getCircleColor().asConstant(), color.asConstant()); layer->setCircleOpacity(opacity); EXPECT_EQ(layer->getCircleOpacity().asConstant(), opacity.asConstant()); layer->setCircleRadius(radius); EXPECT_EQ(layer->getCircleRadius().asConstant(), radius.asConstant()); layer->setCircleBlur(blur); EXPECT_EQ(layer->getCircleBlur().asConstant(), blur.asConstant()); layer->setCircleTranslate(translate); EXPECT_EQ(layer->getCircleTranslate().asConstant(), translate.asConstant()); layer->setCircleTranslateAnchor(translateAnchor); EXPECT_EQ(layer->getCircleTranslateAnchor().asConstant(), translateAnchor.asConstant()); } TEST(Layer, FillProperties) { auto layer = std::make_unique("fill", "source"); EXPECT_TRUE(layer->is()); // Paint properties layer->setFillColor(color); EXPECT_EQ(layer->getFillColor().asConstant(), color.asConstant()); layer->setFillOutlineColor(color); EXPECT_EQ(layer->getFillOutlineColor().asConstant(), color.asConstant()); layer->setFillOpacity(opacity); EXPECT_EQ(layer->getFillOpacity().asConstant(), opacity.asConstant()); layer->setFillPattern(pattern); EXPECT_EQ(layer->getFillPattern().asConstant(), pattern.asConstant()); layer->setFillAntialias(antialias); EXPECT_EQ(layer->getFillAntialias().asConstant(), antialias.asConstant()); layer->setFillTranslate(translate); EXPECT_EQ(layer->getFillTranslate().asConstant(), translate.asConstant()); layer->setFillTranslateAnchor(translateAnchor); EXPECT_EQ(layer->getFillTranslateAnchor().asConstant(), translateAnchor.asConstant()); } TEST(Layer, LineProperties) { auto layer = std::make_unique("line", "source"); EXPECT_TRUE(layer->is()); // Layout properties layer->setLineCap(lineCap); EXPECT_EQ(layer->getLineCap().asConstant(), lineCap.asConstant()); layer->setLineJoin(lineJoin); EXPECT_EQ(layer->getLineJoin().asConstant(), lineJoin.asConstant()); layer->setLineMiterLimit(miterLimit); EXPECT_EQ(layer->getLineMiterLimit().asConstant(), miterLimit.asConstant()); layer->setLineRoundLimit(roundLimit); EXPECT_EQ(layer->getLineRoundLimit().asConstant(), roundLimit.asConstant()); // Paint properties layer->setLineColor(color); EXPECT_EQ(layer->getLineColor().asConstant(), color.asConstant()); layer->setLineOpacity(opacity); EXPECT_EQ(layer->getLineOpacity().asConstant(), opacity.asConstant()); layer->setLineTranslate(translate); EXPECT_EQ(layer->getLineTranslate().asConstant(), translate.asConstant()); layer->setLineTranslateAnchor(translateAnchor); EXPECT_EQ(layer->getLineTranslateAnchor().asConstant(), translateAnchor.asConstant()); layer->setLineWidth(width); EXPECT_EQ(layer->getLineWidth().asConstant(), width.asConstant()); layer->setLineGapWidth(gapWidth); EXPECT_EQ(layer->getLineGapWidth().asConstant(), gapWidth.asConstant()); layer->setLineOffset(offset); EXPECT_EQ(layer->getLineOffset().asConstant(), offset.asConstant()); layer->setLineBlur(blur); EXPECT_EQ(layer->getLineBlur().asConstant(), blur.asConstant()); layer->setLineDasharray(dashArray); EXPECT_EQ(layer->getLineDasharray().asConstant(), dashArray.asConstant()); layer->setLinePattern(pattern); EXPECT_EQ(layer->getLinePattern().asConstant(), pattern.asConstant()); } TEST(Layer, RasterProperties) { auto layer = std::make_unique("raster", "source"); EXPECT_TRUE(layer->is()); // Paint properties layer->setRasterOpacity(opacity); EXPECT_EQ(layer->getRasterOpacity().asConstant(), opacity.asConstant()); layer->setRasterHueRotate(hueRotate); EXPECT_EQ(layer->getRasterHueRotate().asConstant(), hueRotate.asConstant()); layer->setRasterBrightnessMin(brightness); EXPECT_EQ(layer->getRasterBrightnessMin().asConstant(), brightness.asConstant()); layer->setRasterBrightnessMax(brightness); EXPECT_EQ(layer->getRasterBrightnessMax().asConstant(), brightness.asConstant()); layer->setRasterSaturation(saturation); EXPECT_EQ(layer->getRasterSaturation().asConstant(), saturation.asConstant()); layer->setRasterContrast(contrast); EXPECT_EQ(layer->getRasterContrast().asConstant(), contrast.asConstant()); layer->setRasterFadeDuration(duration); EXPECT_EQ(layer->getRasterFadeDuration().asConstant(), duration.asConstant()); }