|
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{ |
| 28 | + .role = AccessibilityRole::None, .name = "none"}, |
| 29 | + AccessibilityRoleTestCase{ |
| 30 | + .role = AccessibilityRole::Button, .name = "button"}, |
| 31 | + AccessibilityRoleTestCase{ |
| 32 | + .role = AccessibilityRole::Dropdownlist, .name = "dropdownlist"}, |
| 33 | + AccessibilityRoleTestCase{ |
| 34 | + .role = AccessibilityRole::Togglebutton, .name = "togglebutton"}, |
| 35 | + AccessibilityRoleTestCase{ |
| 36 | + .role = AccessibilityRole::Link, .name = "link"}, |
| 37 | + AccessibilityRoleTestCase{ |
| 38 | + .role = AccessibilityRole::Search, .name = "search"}, |
| 39 | + AccessibilityRoleTestCase{ |
| 40 | + .role = AccessibilityRole::Image, .name = "image"}, |
| 41 | + AccessibilityRoleTestCase{ |
| 42 | + .role = AccessibilityRole::Keyboardkey, .name = "keyboardkey"}, |
| 43 | + AccessibilityRoleTestCase{ |
| 44 | + .role = AccessibilityRole::Text, .name = "text"}, |
| 45 | + AccessibilityRoleTestCase{ |
| 46 | + .role = AccessibilityRole::Adjustable, .name = "adjustable"}, |
| 47 | + AccessibilityRoleTestCase{ |
| 48 | + .role = AccessibilityRole::Imagebutton, .name = "imagebutton"}, |
| 49 | + AccessibilityRoleTestCase{ |
| 50 | + .role = AccessibilityRole::Header, .name = "header"}, |
| 51 | + AccessibilityRoleTestCase{ |
| 52 | + .role = AccessibilityRole::Summary, .name = "summary"}, |
| 53 | + AccessibilityRoleTestCase{ |
| 54 | + .role = AccessibilityRole::Alert, .name = "alert"}, |
| 55 | + AccessibilityRoleTestCase{ |
| 56 | + .role = AccessibilityRole::Checkbox, .name = "checkbox"}, |
| 57 | + AccessibilityRoleTestCase{ |
| 58 | + .role = AccessibilityRole::Combobox, .name = "combobox"}, |
| 59 | + AccessibilityRoleTestCase{ |
| 60 | + .role = AccessibilityRole::Menu, .name = "menu"}, |
| 61 | + AccessibilityRoleTestCase{ |
| 62 | + .role = AccessibilityRole::Menubar, .name = "menubar"}, |
| 63 | + AccessibilityRoleTestCase{ |
| 64 | + .role = AccessibilityRole::Menuitem, .name = "menuitem"}, |
| 65 | + AccessibilityRoleTestCase{ |
| 66 | + .role = AccessibilityRole::Progressbar, .name = "progressbar"}, |
| 67 | + AccessibilityRoleTestCase{ |
| 68 | + .role = AccessibilityRole::Radio, .name = "radio"}, |
| 69 | + AccessibilityRoleTestCase{ |
| 70 | + .role = AccessibilityRole::Radiogroup, .name = "radiogroup"}, |
| 71 | + AccessibilityRoleTestCase{ |
| 72 | + .role = AccessibilityRole::Scrollbar, .name = "scrollbar"}, |
| 73 | + AccessibilityRoleTestCase{ |
| 74 | + .role = AccessibilityRole::Spinbutton, .name = "spinbutton"}, |
| 75 | + AccessibilityRoleTestCase{ |
| 76 | + .role = AccessibilityRole::Switch, .name = "switch"}, |
| 77 | + AccessibilityRoleTestCase{.role = AccessibilityRole::Tab, .name = "tab"}, |
| 78 | + AccessibilityRoleTestCase{ |
| 79 | + .role = AccessibilityRole::Tabbar, .name = "tabbar"}, |
| 80 | + AccessibilityRoleTestCase{ |
| 81 | + .role = AccessibilityRole::Tablist, .name = "tablist"}, |
| 82 | + AccessibilityRoleTestCase{ |
| 83 | + .role = AccessibilityRole::Timer, .name = "timer"}, |
| 84 | + AccessibilityRoleTestCase{ |
| 85 | + .role = AccessibilityRole::List, .name = "list"}, |
| 86 | + AccessibilityRoleTestCase{ |
| 87 | + .role = AccessibilityRole::Toolbar, .name = "toolbar"}, |
| 88 | + AccessibilityRoleTestCase{ |
| 89 | + .role = AccessibilityRole::Grid, .name = "grid"}, |
| 90 | + AccessibilityRoleTestCase{ |
| 91 | + .role = AccessibilityRole::Pager, .name = "pager"}, |
| 92 | + AccessibilityRoleTestCase{ |
| 93 | + .role = AccessibilityRole::Scrollview, .name = "scrollview"}, |
| 94 | + AccessibilityRoleTestCase{ |
| 95 | + .role = AccessibilityRole::Horizontalscrollview, |
| 96 | + .name = "horizontalscrollview"}, |
| 97 | + AccessibilityRoleTestCase{ |
| 98 | + .role = AccessibilityRole::Viewgroup, .name = "viewgroup"}, |
| 99 | + AccessibilityRoleTestCase{ |
| 100 | + .role = AccessibilityRole::Webview, .name = "webview"}, |
| 101 | + AccessibilityRoleTestCase{ |
| 102 | + .role = AccessibilityRole::Drawerlayout, .name = "drawerlayout"}, |
| 103 | + AccessibilityRoleTestCase{ |
| 104 | + .role = AccessibilityRole::Slidingdrawer, .name = "slidingdrawer"}, |
| 105 | + AccessibilityRoleTestCase{ |
| 106 | + .role = AccessibilityRole::Iconmenu, .name = "iconmenu"}, |
| 107 | + }; |
| 108 | + static_assert( |
| 109 | + accessibilityRoles.size() == |
| 110 | + static_cast<size_t>(AccessibilityRole::Iconmenu) + 1); |
| 111 | + |
| 112 | + const PropsParserContext context{-1, ContextContainer{}}; |
| 113 | + for (const auto& [role, name] : accessibilityRoles) { |
| 114 | + SCOPED_TRACE(name); |
| 115 | + EXPECT_EQ(toString(role), name); |
| 116 | + |
| 117 | + AccessibilityRole parsedRole = role == AccessibilityRole::None |
| 118 | + ? AccessibilityRole::Button |
| 119 | + : AccessibilityRole::None; |
| 120 | + fromRawValue(context, RawValue{folly::dynamic(name)}, parsedRole); |
| 121 | + EXPECT_EQ(parsedRole, role); |
| 122 | + } |
| 123 | +} |
| 124 | + |
17 | 125 | TEST(ConversionsTest, unprocessed_box_shadow_string) { |
18 | 126 | RawValue value{ |
19 | 127 | folly::dynamic("10px 2px 0 5px #fff, inset 20px 10px 5px 0 #000")}; |
|
0 commit comments