370 lines
15 KiB
C++
370 lines
15 KiB
C++
|
#include <TimedEventQueue.h>
|
||
|
#include <stdio.h>
|
||
|
|
||
|
#define DEBUG 1
|
||
|
#include <Debug.h>
|
||
|
|
||
|
void DumpEvent(const media_timed_event *e)
|
||
|
{
|
||
|
if (!e) {
|
||
|
printf("NULL\n");
|
||
|
return;
|
||
|
}
|
||
|
printf("time = 0x%x, type = ",int(e->event_time));
|
||
|
switch (e->type) {
|
||
|
case BTimedEventQueue::B_NO_EVENT: printf("B_NO_EVENT\n"); break;
|
||
|
case BTimedEventQueue::B_ANY_EVENT: printf("B_ANY_EVENT\n"); break;
|
||
|
case BTimedEventQueue::B_START: printf("B_START\n"); break;
|
||
|
case BTimedEventQueue::B_STOP: printf("B_STOP\n"); break;
|
||
|
case BTimedEventQueue::B_SEEK: printf("B_SEEK\n"); break;
|
||
|
case BTimedEventQueue::B_WARP: printf("B_WARP\n"); break;
|
||
|
case BTimedEventQueue::B_TIMER: printf("B_TIMER\n"); break;
|
||
|
case BTimedEventQueue::B_HANDLE_BUFFER: printf("B_HANDLE_BUFFER\n"); break;
|
||
|
case BTimedEventQueue::B_DATA_STATUS: printf("B_DATA_STATUS\n"); break;
|
||
|
case BTimedEventQueue::B_HARDWARE: printf("B_HARDWARE\n"); break;
|
||
|
case BTimedEventQueue::B_PARAMETER: printf("B_PARAMETER\n"); break;
|
||
|
default: printf("0x%x\n",int(e->type));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void InsertRemoveTest()
|
||
|
{
|
||
|
BTimedEventQueue *q =new BTimedEventQueue;
|
||
|
q->AddEvent(media_timed_event(0x1007,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1005,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x9999,BTimedEventQueue::B_STOP));//
|
||
|
q->AddEvent(media_timed_event(0x1006,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1002,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1011,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x0777,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1001,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_STOP));//
|
||
|
q->AddEvent(media_timed_event(0x1003,BTimedEventQueue::B_START));//
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_SEEK));//
|
||
|
ASSERT(q->EventCount() == 12);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1003,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 11);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1007,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 10);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1000,BTimedEventQueue::B_STOP));
|
||
|
ASSERT(q->EventCount() == 9);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
ASSERT(q->EventCount() == 8);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
//remove non existing element (time)
|
||
|
q->RemoveEvent(&media_timed_event(0x1111,BTimedEventQueue::B_STOP));
|
||
|
ASSERT(q->EventCount() == 8);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
//remove non existing element (type)
|
||
|
q->RemoveEvent(&media_timed_event(0x1011,BTimedEventQueue::B_STOP));
|
||
|
ASSERT(q->EventCount() == 8);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1000,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 7);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1011,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 6);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1002,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 5);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x0777,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 4);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x9999,BTimedEventQueue::B_STOP));
|
||
|
ASSERT(q->EventCount() == 3);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1006,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 2);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1001,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 1);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
q->RemoveEvent(&media_timed_event(0x1005,BTimedEventQueue::B_START));
|
||
|
ASSERT(q->EventCount() == 0);
|
||
|
ASSERT(q->HasEvents() == false);
|
||
|
|
||
|
delete q;
|
||
|
}
|
||
|
|
||
|
media_timed_event DoForEachEvent;
|
||
|
int DoForEachCount;
|
||
|
|
||
|
BTimedEventQueue::queue_action
|
||
|
DoForEachHook(media_timed_event *event, void *context)
|
||
|
{
|
||
|
DoForEachEvent = *event;
|
||
|
DoForEachCount++;
|
||
|
printf("Callback, event_time = %x\n",int(event->event_time));
|
||
|
return BTimedEventQueue::B_NO_ACTION;
|
||
|
}
|
||
|
|
||
|
void DoForEachTest()
|
||
|
{
|
||
|
BTimedEventQueue *q =new BTimedEventQueue;
|
||
|
ASSERT(q->EventCount() == 0);
|
||
|
ASSERT(q->HasEvents() == false);
|
||
|
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
q->AddEvent(media_timed_event(0x1001,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1002,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1003,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1011,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1012,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1004,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1005,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
q->AddEvent(media_timed_event(0x1007,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1008,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1009,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_SEEK));
|
||
|
ASSERT(q->EventCount() == 16);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
|
||
|
printf("\n expected: 0x1000\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1000,BTimedEventQueue::B_AT_TIME);
|
||
|
ASSERT(DoForEachEvent == media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
ASSERT(DoForEachCount == 1);
|
||
|
|
||
|
|
||
|
printf("\n expected: 0x1006\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1006,BTimedEventQueue::B_AT_TIME);
|
||
|
ASSERT(DoForEachEvent == media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
ASSERT(DoForEachCount == 1);
|
||
|
|
||
|
printf("\n expected: 0x1013, 0x1013, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1013,BTimedEventQueue::B_AT_TIME);
|
||
|
ASSERT(DoForEachCount == 3);
|
||
|
|
||
|
printf("\n expected: 0x1000, 0x1001, 0x1002\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1003,BTimedEventQueue::B_BEFORE_TIME,false);
|
||
|
ASSERT(DoForEachCount == 3);
|
||
|
|
||
|
printf("\n expected: 0x1000, 0x1001, 0x1002, 0x1003\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1003,BTimedEventQueue::B_BEFORE_TIME,true);
|
||
|
ASSERT(DoForEachCount == 4);
|
||
|
|
||
|
printf("\n expected: 0x1013, 0x1013, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1012,BTimedEventQueue::B_AFTER_TIME,false);
|
||
|
ASSERT(DoForEachCount == 3);
|
||
|
|
||
|
printf("\n expected: 0x1012, 0x1013, 0x1013, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1012,BTimedEventQueue::B_AFTER_TIME,true);
|
||
|
ASSERT(DoForEachCount == 4);
|
||
|
|
||
|
printf("\n expected: none\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1013,BTimedEventQueue::B_AFTER_TIME,false);
|
||
|
ASSERT(DoForEachCount == 0);
|
||
|
|
||
|
printf("\n expected: 0x1013, 0x1013, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1013,BTimedEventQueue::B_AFTER_TIME,true);
|
||
|
ASSERT(DoForEachCount == 3);
|
||
|
|
||
|
printf("\n expected: all 16\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x0,BTimedEventQueue::B_ALWAYS);
|
||
|
ASSERT(DoForEachCount == 16);
|
||
|
|
||
|
printf("\n expected: none\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x0,BTimedEventQueue::B_ALWAYS,false,BTimedEventQueue::B_WARP);
|
||
|
ASSERT(DoForEachCount == 0);
|
||
|
|
||
|
printf("\n expected: 0x1000, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x0,BTimedEventQueue::B_ALWAYS,false,BTimedEventQueue::B_SEEK);
|
||
|
ASSERT(DoForEachCount == 2);
|
||
|
|
||
|
printf("\n expected: 0x1000, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x0999,BTimedEventQueue::B_AFTER_TIME,false,BTimedEventQueue::B_SEEK);
|
||
|
ASSERT(DoForEachCount == 2);
|
||
|
|
||
|
printf("\n expected: 0x1000, 0x1013\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x1014,BTimedEventQueue::B_BEFORE_TIME,false,BTimedEventQueue::B_SEEK);
|
||
|
ASSERT(DoForEachCount == 2);
|
||
|
|
||
|
printf("\n expected: none\n");
|
||
|
DoForEachCount = 0;
|
||
|
q->DoForEach(DoForEachHook,(void*)1234,0x0004,BTimedEventQueue::B_BEFORE_TIME,true);
|
||
|
ASSERT(DoForEachCount == 0);
|
||
|
|
||
|
delete q;
|
||
|
}
|
||
|
|
||
|
void MatchTest()
|
||
|
{
|
||
|
BTimedEventQueue *q = new BTimedEventQueue;
|
||
|
ASSERT(q->EventCount() == 0);
|
||
|
ASSERT(q->HasEvents() == false);
|
||
|
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
q->AddEvent(media_timed_event(0x1001,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1002,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1003,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1011,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1012,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1004,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1005,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
q->AddEvent(media_timed_event(0x1007,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1008,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1009,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_SEEK));
|
||
|
ASSERT(q->EventCount() == 16);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1001,BTimedEventQueue::B_AFTER_TIME,true,BTimedEventQueue::B_STOP));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_AT_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1007,BTimedEventQueue::B_BEFORE_TIME,true,BTimedEventQueue::B_STOP));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_BEFORE_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_AFTER_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(0);
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_BEFORE_TIME,false,BTimedEventQueue::B_STOP));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(0);
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_AFTER_TIME,false,BTimedEventQueue::B_STOP));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(0);
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1006,BTimedEventQueue::B_AT_TIME,false,BTimedEventQueue::B_SEEK));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1000,BTimedEventQueue::B_AFTER_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1010,BTimedEventQueue::B_BEFORE_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1007,BTimedEventQueue::B_BEFORE_TIME,false));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1013,BTimedEventQueue::B_SEEK));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1001,BTimedEventQueue::B_AFTER_TIME,false,BTimedEventQueue::B_SEEK));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1009,BTimedEventQueue::B_AFTER_TIME,false));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1010,BTimedEventQueue::B_AFTER_TIME,true));
|
||
|
|
||
|
printf("\nexpected: "); DumpEvent(&media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
printf("found: "); DumpEvent(q->FindFirstMatch(0x1010,BTimedEventQueue::B_AT_TIME,true));
|
||
|
|
||
|
delete q;
|
||
|
}
|
||
|
|
||
|
void FlushTest()
|
||
|
{
|
||
|
BTimedEventQueue *q = new BTimedEventQueue;
|
||
|
ASSERT(q->EventCount() == 0);
|
||
|
ASSERT(q->HasEvents() == false);
|
||
|
|
||
|
q->AddEvent(media_timed_event(0x1000,BTimedEventQueue::B_SEEK));
|
||
|
q->AddEvent(media_timed_event(0x1001,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1002,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1003,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1004,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1005,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1006,BTimedEventQueue::B_STOP));
|
||
|
q->AddEvent(media_timed_event(0x1007,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1008,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1009,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1010,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1011,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1012,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_START));
|
||
|
q->AddEvent(media_timed_event(0x1013,BTimedEventQueue::B_SEEK));
|
||
|
ASSERT(q->EventCount() == 16);
|
||
|
ASSERT(q->HasEvents() == true);
|
||
|
|
||
|
printf("### removing 0x1007\n");
|
||
|
q->FlushEvents(0x1007, BTimedEventQueue::B_AT_TIME);
|
||
|
ASSERT(q->EventCount() == 15);
|
||
|
|
||
|
printf("### removing 0x1013\n");
|
||
|
q->FlushEvents(0x1012, BTimedEventQueue::B_AFTER_TIME,false);
|
||
|
ASSERT(q->EventCount() == 12);
|
||
|
|
||
|
printf("### removing none\n");
|
||
|
q->FlushEvents(0x1fff, BTimedEventQueue::B_AFTER_TIME,false);
|
||
|
ASSERT(q->EventCount() == 12);
|
||
|
|
||
|
printf("### removing none\n");
|
||
|
q->FlushEvents(0x1fff, BTimedEventQueue::B_AFTER_TIME,true);
|
||
|
ASSERT(q->EventCount() == 12);
|
||
|
|
||
|
printf("### removing 0x1010, 0x1011, 0x1012\n");
|
||
|
q->FlushEvents(0x1010, BTimedEventQueue::B_AFTER_TIME,true);
|
||
|
ASSERT(q->EventCount() == 9);
|
||
|
|
||
|
printf("### removing 0x1000 to 0x1005\n");
|
||
|
q->FlushEvents(0x1006, BTimedEventQueue::B_BEFORE_TIME,false);
|
||
|
ASSERT(q->EventCount() == 3);
|
||
|
|
||
|
printf("### removing 0x1006\n");
|
||
|
q->FlushEvents(0x1006, BTimedEventQueue::B_AT_TIME);
|
||
|
ASSERT(q->EventCount() == 2);
|
||
|
|
||
|
printf("### removing 0x1008 0x1009\n");
|
||
|
q->FlushEvents(0xffffff, BTimedEventQueue::B_BEFORE_TIME);
|
||
|
ASSERT(q->EventCount() == 0);
|
||
|
|
||
|
delete q;
|
||
|
}
|
||
|
|
||
|
|
||
|
int main()
|
||
|
{
|
||
|
InsertRemoveTest();
|
||
|
DoForEachTest();
|
||
|
MatchTest();
|
||
|
FlushTest();
|
||
|
return 0;
|
||
|
}
|