Example #1
0
TEST(A1UnitTestDemos, Interaction) {
  StopWatch* watch = new StopWatch(XApplication::GetInstance()->GetEventQueue(), Rectangle(0, 0, 200, 75));
  EXPECT_FALSE(watch == NULL);

  // Create a synthetic mouse event to test whether watch responds to it
  // or not. Note that this assumes that clicking in the location
  // specified amounts to pressing the start/stop button. Your actual
  // interaction will likely be different, making this test useless.
  // However, this should provide a template for how to do unit tests
  // for interaction.
  EXPECT_FALSE(watch->GetParentWindow() == NULL);
  MouseEvent* e = new MouseEvent(watch->GetParentWindow(), MouseEvent::mouseUp, Point(10, 10));

  EventQueue* queue = XApplication::GetInstance()->GetEventQueue();
  EXPECT_FALSE(queue == NULL);

  EXPECT_FALSE(watch->IsRunning());
  queue->AddEventToQueue(e);
  unsigned int max_num_tries_to_flush_queue = 10;
  while (max_num_tries_to_flush_queue-- > 0
         && queue->GetNumEventsInQueue() > 0
         && !watch->IsRunning())
    {
      queue->ProcessNextEvent();
    }
  EXPECT_TRUE(watch->IsRunning());

  queue->ClearEventQueue();
  delete watch;
  // We do not need to delete the mouse event that we created, because
  // it will be deleted automatically by the EventQueue.
}
Example #2
0
TEST(A1MarkingEventQueueTests, EventQueuing) {
  // Test that events are queued properly
  EventQueue eventQueue;
  EXPECT_EQ(0, eventQueue.GetNumEventsInQueue());

  EXPECT_EQ(0, MemoryTrackingEvent::num_allocated);
  MemoryTrackingEvent* event = new MemoryTrackingEvent();
  EXPECT_EQ(1, MemoryTrackingEvent::num_allocated);
  EXPECT_EQ(0, MemoryTrackingEvent::num_dispatches);

  eventQueue.AddEventToQueue(event);
  EXPECT_EQ(1, eventQueue.GetNumEventsInQueue());

  eventQueue.ProcessNextEvent();
  EXPECT_EQ(0, eventQueue.GetNumEventsInQueue());
  EXPECT_EQ(0, MemoryTrackingEvent::num_allocated);
  EXPECT_EQ(1, MemoryTrackingEvent::num_dispatches);
}
Example #3
0
TEST(A1MarkingEventQueueTests, TimerTests) {
  // Test timers function as expected on event queue (e.g., that they
  // are serviced on a regular basis)
  const long SLEEP_TIME = 1000000/1000;
  EventQueue* eventQueue = new EventQueue();
  TimerListenerCounter repeatingListener;
  TimerListenerCounter oneShotListener;

  EXPECT_EQ(0, MemoryTrackingTimer::num_allocated);
  MemoryTrackingTimer* repeatingTimer = new MemoryTrackingTimer(eventQueue, 0, true, &repeatingListener);
  MemoryTrackingTimer* oneShotTimer   = new MemoryTrackingTimer(eventQueue, 0, false, &oneShotListener);
  EXPECT_EQ(2, MemoryTrackingTimer::num_allocated);

  EXPECT_EQ(0, eventQueue->GetNumTimers());
  EXPECT_EQ(0, repeatingListener.num_times_called);
  EXPECT_EQ(0, oneShotListener.num_times_called);
  EXPECT_FALSE(repeatingTimer->IsRunning());
  EXPECT_FALSE(oneShotTimer->IsRunning());

  EXPECT_FALSE(repeatingTimer->IsRunning());
  EXPECT_FALSE(oneShotTimer->IsRunning());

  repeatingTimer->Start();
  EXPECT_EQ(1, eventQueue->GetNumTimers());
  oneShotTimer->Start();
  EXPECT_EQ(2, eventQueue->GetNumTimers());

  EXPECT_TRUE(repeatingTimer->IsRunning());
  EXPECT_TRUE(oneShotTimer->IsRunning());

  EXPECT_EQ(0, repeatingListener.num_times_called);
  EXPECT_EQ(0, oneShotListener.num_times_called);

  usleep(SLEEP_TIME);

  EXPECT_EQ(0, eventQueue->GetNumEventsInQueue());
  eventQueue->ProcessNextEvent();
  EXPECT_EQ(1, eventQueue->GetNumEventsInQueue());

  EXPECT_EQ(1, repeatingListener.num_times_called);
  EXPECT_EQ(0, oneShotListener.num_times_called);
  EXPECT_EQ(1, eventQueue->GetNumTimers());
  EXPECT_EQ(2, MemoryTrackingTimer::num_allocated);

  EXPECT_TRUE(repeatingTimer->IsRunning());
  EXPECT_FALSE(oneShotTimer->IsRunning());

  eventQueue->ProcessNextEvent();
  EXPECT_EQ(1, oneShotListener.num_times_called);
  EXPECT_EQ(1, eventQueue->GetNumTimers());
  EXPECT_EQ(2, MemoryTrackingTimer::num_allocated);

  EXPECT_TRUE(repeatingTimer->IsRunning());
  EXPECT_FALSE(oneShotTimer->IsRunning());

  usleep(SLEEP_TIME);
  eventQueue->ProcessNextEvent();
  EXPECT_EQ(2, repeatingListener.num_times_called);
  EXPECT_EQ(1, oneShotListener.num_times_called);

  delete repeatingTimer;
  EXPECT_EQ(1, MemoryTrackingTimer::num_allocated);
  EXPECT_EQ(0, eventQueue->GetNumTimers());

  delete oneShotTimer;
  EXPECT_EQ(0, MemoryTrackingTimer::num_allocated);
  EXPECT_EQ(0, eventQueue->GetNumTimers());

  delete eventQueue;

}