On Oct 18, 2011, at 10:03 PM, Peter Hutterer wrote: > On Mon, Oct 17, 2011 at 11:59:38PM -0700, Jeremy Huddleston wrote: >> >> Signed-off-by: Jeremy Huddleston <[email protected]> >> --- >> >> The comments only really make sense wrt the mieq changes that I have >> pending, but the test should work regardless. >> >> test/input.c | 69 >> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 files changed, 69 insertions(+), 0 deletions(-) >> >> diff --git a/test/input.c b/test/input.c >> index a483957..5125dd7 100644 >> --- a/test/input.c >> +++ b/test/input.c >> @@ -40,6 +40,7 @@ >> #include "dixgrabs.h" >> #include "eventstr.h" >> #include "inpututils.h" >> +#include "mi.h" >> #include "assert.h" >> >> /** >> @@ -1592,6 +1593,73 @@ dix_double_fp_conversion(void) >> } >> } >> >> +/* The mieq test verifies that events added to the queue come out in the >> same >> + * order that they went in. >> + */ >> +static uint32_t mieq_test_event_last_processed; >> + >> +static void >> +mieq_test_event_handler(int screenNum, InternalEvent *ie, DeviceIntPtr dev) >> { >> + RawDeviceEvent *e = (RawDeviceEvent *)ie; >> + >> + assert(e->type == ET_RawMotion); >> + assert(e->flags > mieq_test_event_last_processed); >> + mieq_test_event_last_processed = e->flags; >> +} >> + >> +static void _mieq_test_generate_events(uint32_t start, uint32_t count) { >> + count += start; >> + while (start < count) { >> + RawDeviceEvent e = {0}; >> + e.header = ET_Internal; >> + e.type = ET_RawMotion; >> + e.length = sizeof(e); >> + e.time = GetTimeInMillis(); >> + e.flags = start; >> + >> + mieqEnqueue(NULL, (InternalEvent*)&e); >> + >> + start++; >> + } >> +} >> + >> +#define mieq_test_generate_events(c) { _mieq_test_generate_events(next, c); >> next += c; } >> + >> +static void >> +mieq_test(void) { >> + uint32_t next = 1; >> + >> + mieq_test_event_last_processed = 0; >> + mieqInit(); >> + mieqSetHandler(ET_RawMotion, mieq_test_event_handler); >> + >> + /* Enough to fit the buffer but trigger a grow */ >> + mieq_test_generate_events(180); >> + >> + /* We should resize to 512 now */ >> + mieqProcessInputEvents(); > > "should" could be tested against with an assert. a simple > assert(miEventQueue->nevents == 512) would do here. > likewise, you can test for the right number of dropped events. > other than that, the output looks correct. > > I'd like to see an extra test that just tests mieqGrowQueue and makes sure > it is sane.
Yeah, I thought about doing that, but it would require a redesign of mieq.c to expose internals, something I'm not keen on doing in a patch to add this test case. If you really want to do that, we should do it in 2 separate commits, one to rework mieq.c to expose that functionality, and one to add that to this test. > it's too easy to mix up the argument and the global > mieqEventQueue because chances are they're the same in virtually all cases. > A simple test that doesn't sue mieqEventQueue as argument would help there. I agree, but can we do that separately due to the reasons above? _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
