@Test
public void testDelayCollect003() {

    Queueing1NRelationResultHandlerImpl<HogeBean> drh = new Queueing1NRelationResultHandlerImpl<>();
    DaoCollectorStub004 daoCollector = new DaoCollectorStub004(5);
    drh.setDaoCollector(daoCollector);
    HogeBean hoge1 = new HogeBean();
    hoge1.setHoge("hoge1");
    HogeBean hoge2 = new HogeBean();
    hoge2.setHoge("hoge2");
    HogeBean hoge3 = new HogeBean();
    hoge3.setHoge("hoge3");
    HogeBean hoge4 = new HogeBean();
    hoge4.setHoge("hoge4");
    // 以下、スレッドに割り込みが発生しない限り継続されること。
    // queueは空(prevRow=hoge1)
    DummyResultContext context = new DummyResultContext();
    context.setResultObject(hoge1);
    drh.handleResult(context);
    // queue=[hoge1](prevRow=hoge2)
    context.setResultObject(hoge2);
    drh.handleResult(context);
    // queue=[hoge1,hoge2](prevRow=hoge2)
    drh.delayCollect();
    // queue=[hoge1,hoge2,hoge2(プロパティ初期化)](prevRow=hoge3)
    context.setResultObject(hoge3);
    drh.handleResult(context);
    // queue=[hoge1,hoge2,hoge2(プロパティ初期化),hoge3](prevRow=hoge3)
    drh.delayCollect();
    // queue=[hoge1,hoge2,hoge2(プロパティ初期化),hoge3,hoge3(プロパティ初期化)](prevRow=hoge4)
    context.setResultObject(hoge4);
    drh.handleResult(context);
    assertEquals(5L, drh.dataCount.get());
    DataValueObject obj1 = daoCollector.getQueue().poll();
    assertTrue(obj1.getValue() instanceof HogeBean);
    assertEquals("hoge1", ((HogeBean) obj1.getValue()).getHoge());
    assertEquals(1L, obj1.getDataCount());
    DataValueObject obj2 = daoCollector.getQueue().poll();
    assertTrue(obj2.getValue() instanceof HogeBean);
    assertEquals("hoge2", ((HogeBean) obj2.getValue()).getHoge());
    assertEquals(2L, obj2.getDataCount());
    DataValueObject obj3 = daoCollector.getQueue().poll();
    assertTrue(obj3.getValue() instanceof HogeBean);
    // prevRowと同一のインスタンスであるhoge2のパラメータは初期化されていること。
    assertNull(((HogeBean) obj3.getValue()).getHoge());
    assertEquals(3L, obj3.getDataCount());
    DataValueObject obj4 = daoCollector.getQueue().poll();
    assertTrue(obj4.getValue() instanceof HogeBean);
    assertEquals("hoge3", ((HogeBean) obj4.getValue()).getHoge());
    assertEquals(4L, obj4.getDataCount());
    DataValueObject obj5 = daoCollector.getQueue().poll();
    assertTrue(obj5.getValue() instanceof HogeBean);
    // prevRowと同一のインスタンスであるhoge3のパラメータは初期化されていること。
    assertNull(((HogeBean) obj5.getValue()).getHoge());
    assertEquals(5L, obj5.getDataCount());
    assertEquals(0, daoCollector.getQueue().size());
    assertEquals("hoge4", ((HogeBean)drh.prevRow).getHoge());
}