On Wed, Oct 19, 2011 at 10:55:46AM -0700, Jeremy Huddleston wrote: > > 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.
yeah, fair enough. > > > 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? sure. rev-by for the mieq set currently on your master ccfc873671f48780adb64080f606c20543d3fbf3 Cheers, Peter _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
