Fixes for edit boxes in wine.
This commit is contained in:
1 parent
c5657ee5d4
commit
39b7488aea
7 files changed
+112
-7
No files matched your search
+14
-3
@@ -34,6 +34,13 @@ object review are outside the current implementation.
|
||||
|
||||
## Editor and actual Notepad checks
|
||||
|
||||
The CMake build also includes a small MSAA state decoder check. Run it with
|
||||
`xvfb-run -a ctest --test-dir build --output-on-failure`. It uses its own prefix
|
||||
under the build directory, marks it as a managed test process and never sends
|
||||
reader output. It verifies combined bitmasks, unchecked radio buttons, mixed
|
||||
checkboxes, focus-only state suppression and password flags. It does not
|
||||
establish that a particular application's MSAA provider emits those states.
|
||||
|
||||
Run these against the built helper, optionally prefixed with `xvfb-run -a` for
|
||||
a private X display:
|
||||
|
||||
@@ -58,9 +65,13 @@ checks resulting document text as well as recorded accessibility output. These
|
||||
tests use a recording D-Bus service; they do not run the full reader or prove
|
||||
audible speech, typing echo, physical keys, or a physical braille display.
|
||||
|
||||
On 2026-10-10, the build, isolated editor/Notepad/menu checks, staged launcher
|
||||
permissions, and Cthulhu-Go app/remote/wine race tests passed. See the sibling
|
||||
reader's `docs/testing/wine-accessibility.md` for the matching Go behavior.
|
||||
The earlier 2026-10-10 helper fixtures and Go package tests did not establish
|
||||
that Go accepted editor `text` events. The reader follow-up adds that support,
|
||||
focused name/state handling, repeated-action and password/focus tests, and a
|
||||
real private-session D-Bus test through the Go presenter. See the sibling
|
||||
reader's `docs/testing/wine-accessibility.md` for current evidence and live
|
||||
acceptance gates. Run Xvfb fixtures sequentially; concurrent automatic display
|
||||
allocation can collide.
|
||||
|
||||
## Live Notepad acceptance
|
||||
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
// SPDX-License-Identifier: LGPL-2.1-or-later
|
||||
#include "../msaa_states.h"
|
||||
#include <cstdio>
|
||||
|
||||
int main() {
|
||||
const struct { DWORD states; LONG role; const char *expected; } cases[] = {
|
||||
{STATE_SYSTEM_CHECKED | STATE_SYSTEM_UNAVAILABLE, ROLE_SYSTEM_CHECKBUTTON, "checked, unavailable"},
|
||||
{STATE_SYSTEM_MIXED | STATE_SYSTEM_CHECKED, ROLE_SYSTEM_CHECKBUTTON, "half checked"},
|
||||
{0, ROLE_SYSTEM_RADIOBUTTON, "not checked"},
|
||||
{STATE_SYSTEM_FOCUSED | STATE_SYSTEM_FOCUSABLE, ROLE_SYSTEM_PUSHBUTTON, ""},
|
||||
{STATE_SYSTEM_SELECTED | STATE_SYSTEM_EXPANDED, ROLE_SYSTEM_OUTLINEITEM, "selected, expanded"},
|
||||
{STATE_SYSTEM_PROTECTED | STATE_SYSTEM_READONLY, ROLE_SYSTEM_TEXT, "read only, password"},
|
||||
{STATE_SYSTEM_COLLAPSED | STATE_SYSTEM_BUSY, ROLE_SYSTEM_OUTLINEITEM, "collapsed, busy"},
|
||||
{STATE_SYSTEM_PRESSED, ROLE_SYSTEM_PUSHBUTTON, "pressed"},
|
||||
};
|
||||
for (const auto &testCase : cases) {
|
||||
const auto actual = msaa_states(testCase.states, testCase.role);
|
||||
if (actual != testCase.expected) {
|
||||
std::fprintf(stderr, "MSAA state %lu: got '%s', expected '%s'\n",
|
||||
static_cast<unsigned long>(testCase.states), actual.c_str(), testCase.expected);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
std::puts("PASS: MSAA bitmask states, unchecked roles and password flags");
|
||||
return 0;
|
||||
}
|
||||
Reference in new issue
Block a user