/
githubmr
/
facebook-react-native
Обзор
Документация
Войти
/
githubmr
/
facebook-react-native
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
main
packages/react-native/ReactCommon/react/renderer/css/tests/CSSRatioTest.cpp
68 строк
3 KB
Nick Gerleman
Fix some CSSRatio Behavior (#48984)
29 янв 2025, 04:38
29 янв 2025, 04:38
3b5dc56
Код
Авторство
О чём код?
/* * 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 <gtest/gtest.h> #include <react/renderer/css/CSSRatio.h> #include <react/renderer/css/CSSValueParser.h> namespace facebook::react { TEST(CSSRatio, ratio_values) { auto emptyValue = parseCSSProperty<CSSRatio>(""); EXPECT_TRUE(std::holds_alternative<std::monostate>(emptyValue)); auto validRatio = parseCSSProperty<CSSRatio>("16/9"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(validRatio)); EXPECT_EQ(std::get<CSSRatio>(validRatio).numerator, 16.0f); EXPECT_EQ(std::get<CSSRatio>(validRatio).denominator, 9.0f); auto validRatioWithWhitespace = parseCSSProperty<CSSRatio>("16 / 9"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(validRatioWithWhitespace)); EXPECT_EQ(std::get<CSSRatio>(validRatioWithWhitespace).numerator, 16.0f); EXPECT_EQ(std::get<CSSRatio>(validRatioWithWhitespace).denominator, 9.0f); auto singleNumberRatio = parseCSSProperty<CSSRatio>("16"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(singleNumberRatio)); EXPECT_EQ(std::get<CSSRatio>(singleNumberRatio).numerator, 16.0f); EXPECT_EQ(std::get<CSSRatio>(singleNumberRatio).denominator, 1.0f); auto fractionalNumber = parseCSSProperty<CSSRatio>("16.5"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(fractionalNumber)); EXPECT_EQ(std::get<CSSRatio>(fractionalNumber).numerator, 16.5f); EXPECT_EQ(std::get<CSSRatio>(fractionalNumber).denominator, 1.0f); auto fractionalNumerator = parseCSSProperty<CSSRatio>("16.5/9"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(fractionalNumerator)); EXPECT_EQ(std::get<CSSRatio>(fractionalNumerator).numerator, 16.5f); EXPECT_EQ(std::get<CSSRatio>(fractionalNumerator).denominator, 9.0f); auto fractionalDenominator = parseCSSProperty<CSSRatio>("16/9.5"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(fractionalDenominator)); EXPECT_EQ(std::get<CSSRatio>(fractionalDenominator).numerator, 16.0f); } TEST(CSSRatio, invalid_values) { auto negativeNumber = parseCSSProperty<CSSRatio>("-16"); EXPECT_TRUE(std::holds_alternative<std::monostate>(negativeNumber)); auto missingDenominator = parseCSSProperty<CSSRatio>("16/"); EXPECT_TRUE(std::holds_alternative<std::monostate>(missingDenominator)); auto negativeNumerator = parseCSSProperty<CSSRatio>("-16/9"); EXPECT_TRUE(std::holds_alternative<std::monostate>(negativeNumerator)); auto negativeDenominator = parseCSSProperty<CSSRatio>("16/-9"); EXPECT_TRUE(std::holds_alternative<std::monostate>(negativeDenominator)); } TEST(CSSRatio, degenerate_values) { auto degenerateRatio = parseCSSProperty<CSSRatio>("0"); EXPECT_TRUE(std::holds_alternative<CSSRatio>(degenerateRatio)); EXPECT_TRUE(std::get<CSSRatio>(degenerateRatio).isDegenerate()); } } // namespace facebook::react