Cleanup of riched20 tests - request for help on test_WM_PASTE

Alex Villací­s Lasso a_villacis at
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 mailing list