[core] Add unit tests for Formatted class

This commit is contained in:
Alexander Shalamov
2019-11-20 13:54:42 +02:00
parent 614000256b
commit 72e9388a61
4 changed files with 55 additions and 3 deletions

View File

@@ -65,6 +65,7 @@ add_library(
${MBGL_ROOT}/test/style/style_parser.test.cpp
${MBGL_ROOT}/test/text/bidi.test.cpp
${MBGL_ROOT}/test/text/cross_tile_symbol_index.test.cpp
${MBGL_ROOT}/test/text/formatted.test.cpp
${MBGL_ROOT}/test/text/glyph_manager.test.cpp
${MBGL_ROOT}/test/text/glyph_pbf.test.cpp
${MBGL_ROOT}/test/text/language_tag.test.cpp

View File

@@ -17,9 +17,8 @@ bool Formatted::operator==(const Formatted& other) const {
for (std::size_t i = 0; i < sections.size(); i++) {
const auto& thisSection = sections.at(i);
const auto& otherSection = other.sections.at(i);
if (thisSection.text != otherSection.text ||
thisSection.fontScale != otherSection.fontScale ||
thisSection.fontStack != otherSection.fontStack ||
if (thisSection.text != otherSection.text || thisSection.image != otherSection.image ||
thisSection.fontScale != otherSection.fontScale || thisSection.fontStack != otherSection.fontStack ||
thisSection.textColor != otherSection.textColor) {
return false;
}

View File

@@ -67,6 +67,7 @@
"test/style/style_parser.test.cpp",
"test/text/bidi.test.cpp",
"test/text/cross_tile_symbol_index.test.cpp",
"test/text/formatted.test.cpp",
"test/text/glyph_manager.test.cpp",
"test/text/glyph_pbf.test.cpp",
"test/text/language_tag.test.cpp",

View File

@@ -0,0 +1,51 @@
#include <mbgl/style/expression/formatted.hpp>
#include <mbgl/test/util.hpp>
#include <mbgl/util/optional.hpp>
using namespace mbgl;
using namespace mbgl::style::expression;
TEST(Formatted, Equality) {
Formatted text{"Formatted"};
auto emptyImage = FormattedSection{style::expression::Image("Formatted")};
Formatted image{std::vector<FormattedSection>{emptyImage}};
EXPECT_FALSE(text == image);
EXPECT_EQ(text, text);
EXPECT_EQ(image, image);
}
TEST(Formatted, Empty) {
Formatted emptyFormatted{""};
EXPECT_TRUE(emptyFormatted.empty());
auto emptyText = FormattedSection{"", nullopt, nullopt, nullopt};
auto emptyImage = FormattedSection{style::expression::Image()};
Formatted multipleEmptySections{std::vector<FormattedSection>{emptyText, emptyText, emptyText}};
EXPECT_TRUE(multipleEmptySections.empty());
Formatted multipleEmptySectionsWithImage{std::vector<FormattedSection>{emptyText, emptyImage, emptyText}};
EXPECT_TRUE(multipleEmptySectionsWithImage.empty());
auto text = FormattedSection{"Formatted", nullopt, nullopt, nullopt};
auto image = FormattedSection{style::expression::Image("Image")};
Formatted multipleSections{std::vector<FormattedSection>{emptyText, text, emptyText}};
EXPECT_FALSE(multipleSections.empty());
Formatted multipleSectionsWithImage{std::vector<FormattedSection>{emptyText, image, text}};
EXPECT_FALSE(multipleSectionsWithImage.empty());
}
TEST(Formatted, ToString) {
Formatted emptyFormatted{""};
EXPECT_EQ(emptyFormatted.toString(), "");
auto text = FormattedSection{"Formatted", nullopt, nullopt, nullopt};
Formatted multipleSections{std::vector<FormattedSection>{text, text}};
EXPECT_EQ(multipleSections.toString(), "FormattedFormatted");
auto image = FormattedSection{style::expression::Image("Image")};
Formatted multipleEmptySectionsWithImage{std::vector<FormattedSection>{text, image}};
EXPECT_EQ(multipleEmptySectionsWithImage.toString(), "Formatted");
}