1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
|
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/accessibility/ax_mode.h"
#include <limits>
#include "testing/gtest/include/gtest/gtest.h"
namespace ui {
TEST(AXModeTest, HasMode) {
EXPECT_FALSE(AXMode().has_mode(AXMode::kNativeAPIs));
EXPECT_TRUE(AXMode(AXMode::kNativeAPIs).has_mode(AXMode::kNativeAPIs));
EXPECT_TRUE(kAXModeBasic.has_mode(AXMode::kNativeAPIs));
EXPECT_TRUE(kAXModeBasic.has_mode(kAXModeBasic.flags()));
EXPECT_TRUE(kAXModeComplete.has_mode(kAXModeBasic.flags()));
}
TEST(AXModeTest, SetMode) {
AXMode mode;
mode.set_mode(AXMode::kNativeAPIs, true);
EXPECT_EQ(mode, AXMode(AXMode::kNativeAPIs));
mode.set_mode(AXMode::kNativeAPIs, true);
EXPECT_EQ(mode, AXMode(AXMode::kNativeAPIs));
mode.set_mode(AXMode::kNativeAPIs, false);
EXPECT_EQ(mode, AXMode());
mode.set_mode(kAXModeBasic.flags(), true);
EXPECT_EQ(mode, kAXModeBasic);
mode.set_mode(kAXModeWebContentsOnly.flags(), true);
EXPECT_EQ(mode, kAXModeBasic | kAXModeWebContentsOnly);
mode.set_mode(kAXModeWebContentsOnly.flags(), false);
EXPECT_EQ(mode, kAXModeBasic & ~kAXModeWebContentsOnly);
}
TEST(AXModeTest, OrEquals) {
AXMode mode;
mode |= kAXModeBasic;
EXPECT_EQ(mode, kAXModeBasic);
ASSERT_FALSE(mode.has_mode(kAXModeWebContentsOnly.flags()));
mode |= kAXModeWebContentsOnly;
EXPECT_TRUE(mode.has_mode(kAXModeWebContentsOnly.flags()));
mode |= kAXModeFormControls;
EXPECT_TRUE(mode.experimental_flags() & AXMode::kExperimentalFormControls);
}
TEST(AXModeTest, AndEquals) {
AXMode mode;
mode &= kAXModeBasic;
EXPECT_EQ(mode, AXMode());
mode = kAXModeBasic;
mode &= kAXModeBasic;
EXPECT_EQ(mode, kAXModeBasic);
mode = AXMode(AXMode::kWebContents | AXMode::kInlineTextBoxes);
mode &= AXMode(AXMode::kNativeAPIs | AXMode::kWebContents);
EXPECT_EQ(mode, AXMode(AXMode::kWebContents));
}
TEST(AXModeTest, Invert) {
AXMode mode = ~AXMode();
EXPECT_EQ(mode.flags(), ~uint32_t(0));
EXPECT_EQ(mode.experimental_flags(), ~uint32_t(0));
mode = ~kAXModeBasic;
EXPECT_FALSE(mode.has_mode(AXMode::kNativeAPIs));
EXPECT_FALSE(mode.has_mode(AXMode::kWebContents));
EXPECT_TRUE(mode.has_mode(AXMode::kInlineTextBoxes));
}
TEST(AXModeTest, Equality) {
EXPECT_TRUE(kAXModeBasic == kAXModeBasic);
EXPECT_FALSE(kAXModeBasic == kAXModeComplete);
EXPECT_TRUE(AXMode(AXMode::kNone, AXMode::kExperimentalFormControls) ==
AXMode(AXMode::kNone, AXMode::kExperimentalFormControls));
EXPECT_FALSE(AXMode(AXMode::kNativeAPIs, AXMode::kExperimentalFormControls) ==
AXMode(AXMode::kNone, AXMode::kExperimentalFormControls));
}
TEST(AXModeTest, Inequality) {
EXPECT_FALSE(kAXModeBasic != kAXModeBasic);
EXPECT_TRUE(kAXModeBasic != kAXModeComplete);
EXPECT_FALSE(AXMode(AXMode::kNone, AXMode::kExperimentalFormControls) !=
AXMode(AXMode::kNone, AXMode::kExperimentalFormControls));
EXPECT_TRUE(AXMode(AXMode::kNativeAPIs, AXMode::kExperimentalFormControls) !=
AXMode(AXMode::kNone, AXMode::kExperimentalFormControls));
}
TEST(AXModeTest, Or) {
EXPECT_EQ(kAXModeBasic,
AXMode(AXMode::kNativeAPIs) | AXMode(AXMode::kWebContents));
EXPECT_EQ(kAXModeBasic, AXMode() | kAXModeBasic);
EXPECT_EQ(kAXModeFormControls, AXMode() | kAXModeFormControls);
}
TEST(AXModeTest, And) {
EXPECT_EQ(kAXModeBasic,
AXMode(AXMode::kNativeAPIs | AXMode::kWebContents) &
AXMode(AXMode::kNativeAPIs | AXMode::kWebContents));
EXPECT_EQ(AXMode(), kAXModeBasic & AXMode());
EXPECT_EQ(kAXModeFormControls, AXMode(std::numeric_limits<uint32_t>::max(),
std::numeric_limits<uint32_t>::max()) &
kAXModeFormControls);
}
} // namespace ui
|