Cleanup of riched20 tests - request for help on test_WM_PASTE
Alex Villacís Lasso
a_villacis at palosanto.com
Thu Nov 1 11:47:44 CDT 2007
Alex Villacís Lasso escribió:
> I am currently trying to clean up the riched20 tests that are failing in
> WinXP. While doing this, I have encountered the following problem: on
> the function test_WM_PASTE() (at line 1959 of
> dlls/riched20/tests/editor.c in current git), the test is supposed to
> feed simulated keystrokes corresponding to Ctrl-C, Ctrl-V, and so on,
> supposedly to test copy and paste features via the keyboard. The problem
> is that the verification at line 1989 fails on WinXP, because the text
> on the control has not been modified - the control seems to disregard
> simulated WM_CHAR messages of the Ctrl-<keystroke> variety. The test at
> line 1977 succeeds accidentally, because the sequence of Ctrl-C, Ctrl-V,
> Ctrl-Z that is being tested is equivalent to not modifying the control
> text at all.
> A more through test would be to send WM_GETTEXT messages after each step
> to ensure that the text is actually being modified, but the bigger
> problem is how to make the control obey the keystrokes in the first
> place. If I place a message loop right before the DestroyWindow() call,
> I can send keystrokes manually and they work as expected. Only simulated
> WM_CHAR messages are being discarded.
> I have tried changing the SendMessage() calls into PostMessage() calls
> (since Visual Studio's Spy++ shows that WM_CHAR messages were posted,
> not sent), but to no avail. I have also tried placing message loops
> between messages, with no luck. I have even tried to simulate the
> WM_KEYDOWN and WM_KEYUP messages with parameters exactly as seen by
> Spy++, but this does not work either. So I am asking for help. What
> could be going wrong with this test? How can I feed the expected
> keystrokes so that the test works as expected? Has this test ever worked
> before? It fails in both WinXP (real machine) and inside a QEMU session
> running Win98.
> (All tests on WinXP were compiled with CygWin)
Any thoughts on this? Do I need to supply more information in order to
diagnose the problem?
perl -e '$x=2.4;print sprintf("%.0f + %.0f = %.0f\n",$x,$x,$x+$x);'
More information about the wine-devel