|
5 | 5 | * LICENSE file in the root directory of this source tree. |
6 | 6 | */ |
7 | 7 |
|
| 8 | +#include <array> |
| 9 | + |
8 | 10 | #include <gtest/gtest.h> |
9 | 11 |
|
10 | 12 | #include <react/renderer/attributedstring/conversions.h> |
11 | 13 | #include <react/renderer/components/view/BoxShadowPropsConversions.h> |
12 | 14 | #include <react/renderer/components/view/FilterPropsConversions.h> |
| 15 | +#include <react/renderer/components/view/accessibilityPropsConversions.h> |
13 | 16 | #include <react/renderer/components/view/conversions.h> |
14 | 17 |
|
15 | 18 | namespace facebook::react { |
16 | 19 |
|
| 20 | +TEST(ConversionsTest, accessibility_roles_round_trip) { |
| 21 | + struct AccessibilityRoleTestCase { |
| 22 | + AccessibilityRole role; |
| 23 | + const char* name; |
| 24 | + }; |
| 25 | + |
| 26 | + constexpr std::array accessibilityRoles{ |
| 27 | + AccessibilityRoleTestCase{AccessibilityRole::None, "none"}, |
| 28 | + AccessibilityRoleTestCase{AccessibilityRole::Button, "button"}, |
| 29 | + AccessibilityRoleTestCase{ |
| 30 | + AccessibilityRole::Dropdownlist, "dropdownlist"}, |
| 31 | + AccessibilityRoleTestCase{ |
| 32 | + AccessibilityRole::Togglebutton, "togglebutton"}, |
| 33 | + AccessibilityRoleTestCase{AccessibilityRole::Link, "link"}, |
| 34 | + AccessibilityRoleTestCase{AccessibilityRole::Search, "search"}, |
| 35 | + AccessibilityRoleTestCase{AccessibilityRole::Image, "image"}, |
| 36 | + AccessibilityRoleTestCase{AccessibilityRole::Keyboardkey, "keyboardkey"}, |
| 37 | + AccessibilityRoleTestCase{AccessibilityRole::Text, "text"}, |
| 38 | + AccessibilityRoleTestCase{AccessibilityRole::Adjustable, "adjustable"}, |
| 39 | + AccessibilityRoleTestCase{AccessibilityRole::Imagebutton, "imagebutton"}, |
| 40 | + AccessibilityRoleTestCase{AccessibilityRole::Header, "header"}, |
| 41 | + AccessibilityRoleTestCase{AccessibilityRole::Summary, "summary"}, |
| 42 | + AccessibilityRoleTestCase{AccessibilityRole::Alert, "alert"}, |
| 43 | + AccessibilityRoleTestCase{AccessibilityRole::Checkbox, "checkbox"}, |
| 44 | + AccessibilityRoleTestCase{AccessibilityRole::Combobox, "combobox"}, |
| 45 | + AccessibilityRoleTestCase{AccessibilityRole::Menu, "menu"}, |
| 46 | + AccessibilityRoleTestCase{AccessibilityRole::Menubar, "menubar"}, |
| 47 | + AccessibilityRoleTestCase{AccessibilityRole::Menuitem, "menuitem"}, |
| 48 | + AccessibilityRoleTestCase{AccessibilityRole::Progressbar, "progressbar"}, |
| 49 | + AccessibilityRoleTestCase{AccessibilityRole::Radio, "radio"}, |
| 50 | + AccessibilityRoleTestCase{AccessibilityRole::Radiogroup, "radiogroup"}, |
| 51 | + AccessibilityRoleTestCase{AccessibilityRole::Scrollbar, "scrollbar"}, |
| 52 | + AccessibilityRoleTestCase{AccessibilityRole::Spinbutton, "spinbutton"}, |
| 53 | + AccessibilityRoleTestCase{AccessibilityRole::Switch, "switch"}, |
| 54 | + AccessibilityRoleTestCase{AccessibilityRole::Tab, "tab"}, |
| 55 | + AccessibilityRoleTestCase{AccessibilityRole::Tabbar, "tabbar"}, |
| 56 | + AccessibilityRoleTestCase{AccessibilityRole::Tablist, "tablist"}, |
| 57 | + AccessibilityRoleTestCase{AccessibilityRole::Timer, "timer"}, |
| 58 | + AccessibilityRoleTestCase{AccessibilityRole::List, "list"}, |
| 59 | + AccessibilityRoleTestCase{AccessibilityRole::Toolbar, "toolbar"}, |
| 60 | + AccessibilityRoleTestCase{AccessibilityRole::Grid, "grid"}, |
| 61 | + AccessibilityRoleTestCase{AccessibilityRole::Pager, "pager"}, |
| 62 | + AccessibilityRoleTestCase{AccessibilityRole::Scrollview, "scrollview"}, |
| 63 | + AccessibilityRoleTestCase{ |
| 64 | + AccessibilityRole::Horizontalscrollview, "horizontalscrollview"}, |
| 65 | + AccessibilityRoleTestCase{AccessibilityRole::Viewgroup, "viewgroup"}, |
| 66 | + AccessibilityRoleTestCase{AccessibilityRole::Webview, "webview"}, |
| 67 | + AccessibilityRoleTestCase{ |
| 68 | + AccessibilityRole::Drawerlayout, "drawerlayout"}, |
| 69 | + AccessibilityRoleTestCase{ |
| 70 | + AccessibilityRole::Slidingdrawer, "slidingdrawer"}, |
| 71 | + AccessibilityRoleTestCase{AccessibilityRole::Iconmenu, "iconmenu"}, |
| 72 | + }; |
| 73 | + static_assert( |
| 74 | + accessibilityRoles.size() == |
| 75 | + static_cast<size_t>(AccessibilityRole::Iconmenu) + 1); |
| 76 | + |
| 77 | + const PropsParserContext context{-1, ContextContainer{}}; |
| 78 | + for (const auto& [role, name] : accessibilityRoles) { |
| 79 | + SCOPED_TRACE(name); |
| 80 | + EXPECT_EQ(toString(role), name); |
| 81 | + |
| 82 | + AccessibilityRole parsedRole = role == AccessibilityRole::None |
| 83 | + ? AccessibilityRole::Button |
| 84 | + : AccessibilityRole::None; |
| 85 | + fromRawValue(context, RawValue{folly::dynamic(name)}, parsedRole); |
| 86 | + EXPECT_EQ(parsedRole, role); |
| 87 | + } |
| 88 | +} |
| 89 | + |
17 | 90 | TEST(ConversionsTest, unprocessed_box_shadow_string) { |
18 | 91 | RawValue value{ |
19 | 92 | folly::dynamic("10px 2px 0 5px #fff, inset 20px 10px 5px 0 #000")}; |
|
0 commit comments