/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #include #include #include namespace facebook::react { TEST(CSSFontVariant, single_variant) { auto commonLigatures = parseCSSProperty("common-ligatures"); EXPECT_TRUE(std::holds_alternative(commonLigatures)); EXPECT_EQ( std::get(commonLigatures), CSSFontVariant::CommonLigatures); auto stylistic15 = parseCSSProperty("stylistic-fifteen"); EXPECT_TRUE(std::holds_alternative(stylistic15)); EXPECT_EQ( std::get(stylistic15), CSSFontVariant::StylisticFifteen); auto bogus = parseCSSProperty("inset"); EXPECT_TRUE(std::holds_alternative(bogus)); } TEST(CSSFontVariant, multiple_variants) { auto commonLigatures = parseCSSProperty("common-ligatures"); EXPECT_TRUE(std::holds_alternative(commonLigatures)); EXPECT_EQ(std::get(commonLigatures).size(), 1); EXPECT_EQ( std::get(commonLigatures)[0], CSSFontVariant::CommonLigatures); auto commonLigaturesAndHistoricalForms = parseCSSProperty("common-ligatures no-contextual"); EXPECT_TRUE(std::holds_alternative( commonLigaturesAndHistoricalForms)); EXPECT_EQ( std::get(commonLigaturesAndHistoricalForms).size(), 2); EXPECT_EQ( std::get(commonLigaturesAndHistoricalForms)[0], CSSFontVariant::CommonLigatures); EXPECT_EQ( std::get(commonLigaturesAndHistoricalForms)[1], CSSFontVariant::NoContextual); auto lotsOfWhitespace = parseCSSProperty( " no-discretionary-ligatures \n proportional-nums\tstylistic-twelve"); EXPECT_TRUE(std::holds_alternative(lotsOfWhitespace)); EXPECT_EQ(std::get(lotsOfWhitespace).size(), 3); EXPECT_EQ( std::get(lotsOfWhitespace)[0], CSSFontVariant::NoDiscretionaryLigatures); EXPECT_EQ( std::get(lotsOfWhitespace)[1], CSSFontVariant::ProportionalNums); EXPECT_EQ( std::get(lotsOfWhitespace)[2], CSSFontVariant::StylisticTwelve); auto bogus = parseCSSProperty("inset"); EXPECT_TRUE(std::holds_alternative(bogus)); auto commaSeparated = parseCSSProperty("common-ligatures, stylistic-six"); EXPECT_TRUE(std::holds_alternative(commaSeparated)); } } // namespace facebook::react