/**
  * Handles the given event packet
  *
  * @param event
  */
 private synchronized void handleEvent(EventPacket event) {
   String estring = null;
   if (RequestTest.isTracing()) {
     estring = JSONUtil.write(event.toJSON());
     System.out.println(this.testname + " got event: " + estring); // $NON-NLS-1$
   }
   for (ListIterator iterator = subhandlers.listIterator(); iterator.hasNext(); ) {
     Subhandler subhandler = (Subhandler) iterator.next();
     try {
       if (subhandler.handleEvent(debugSession, event)) {
         if (RequestTest.isTracing()) {
           System.out.println(
               "\t" + this.testname + " handled event: " + estring); // $NON-NLS-1$ //$NON-NLS-2$
         }
         this.expectedEvents.remove(event);
         actualEvents.add(event);
         eventCount++;
         notifyAll();
       }
     } catch (Throwable t) {
       t.printStackTrace();
     }
   }
   if (!event.getEvent().equals("thread")) { // $NON-NLS-1$
     sendContinue(event, null);
   }
 }
  @Test
  public void testSerializeDeserializeNullValues() throws Exception {
    // Build test object
    RequestTest requestTest = new RequestTest();
    requestTest.hellos = new RequestMessage[] {null};
    requestTest.hellos_count = requestTest.hellos.length;

    // Serializer and Deserializer object to and from bytes
    CopyBookSerializer requestTestSerializer = new CopyBookSerializer(RequestTest.class);
    byte[] bytes = requestTestSerializer.serialize(requestTest);
    RequestTest requestTest1 = requestTestSerializer.deserialize(bytes, RequestTest.class);

    assertEquals(0, requestTest1.args.length);
  }
  @Test
  public void testSerializeDeserializeEmptyList() throws Exception {
    // Build test object
    RequestTest requestTest = new RequestTest();
    requestTest.args = new String[] {};
    requestTest.messages = new RequestMessage[] {};

    // Serializer and Deserializer object to and from bytes
    CopyBookSerializer requestTestSerializer = new CopyBookSerializer(RequestTest.class);
    byte[] bytes = requestTestSerializer.serialize(requestTest);
    RequestTest requestTest1 = requestTestSerializer.deserialize(bytes, RequestTest.class);

    assertEquals(0, requestTest1.args.length);
    assertEquals(0, requestTest1.messages.length);
  }
  @Test
  public void testSerializeDeserialize() throws Exception {
    // Build test object
    RequestTest requestTest = new RequestTest();
    requestTest.id = 1;
    requestTest.command = "cmd1234()";
    requestTest.hello = new RequestMessage("Hello", "Body1234");
    requestTest.hellos = new RequestMessage[] {new RequestMessage("abc", "1234ydob")};
    requestTest.hellos_count = requestTest.hellos.length;
    requestTest.messages =
        new RequestMessage[] {
          new RequestMessage("msg1", "stuff123"), new RequestMessage("msg2", "stuff12345")
        };
    requestTest.messages_count = requestTest.messages.length;
    requestTest.args = new String[] {"do", "stuff"};
    requestTest.args_count = requestTest.args.length;

    // Serializer and Deserializer object to and from bytes
    CopyBookSerializer requestTestSerializer = new CopyBookSerializer(RequestTest.class);
    byte[] bytes = requestTestSerializer.serialize(requestTest);
    RequestTest requestTest1 = requestTestSerializer.deserialize(bytes, RequestTest.class);

    assertEquals(requestTest.id, requestTest1.id);
    assertEquals(requestTest.command, requestTest1.command);
    assertEquals(requestTest.hello.title, requestTest1.hello.title);
    assertEquals(requestTest.hello.body, requestTest1.hello.body);
    assertEquals(requestTest.messages_count, requestTest1.messages_count);
    assertEquals(requestTest.messages.length, requestTest1.messages.length);
    assertEquals(requestTest.messages[0].title, requestTest1.messages[0].title);
    assertEquals(requestTest.messages[0].body, requestTest1.messages[0].body);
    assertEquals(requestTest.messages[1].title, requestTest1.messages[1].title);
    assertEquals(requestTest.messages[1].body, requestTest1.messages[1].body);
    assertEquals(requestTest.args_count, requestTest1.args_count);
    assertEquals(requestTest.args.length, requestTest1.args.length);
    assertEquals(requestTest.args[0], requestTest1.args[0]);
    assertEquals(requestTest.args[1], requestTest1.args[1]);
  }