@Test
  public void testTick() {
    IMocksControl control = createControl();

    GregorianCalendar startDateMock = control.createMock(GregorianCalendar.class);
    GregorianCalendar startDateCloneMock = control.createMock(GregorianCalendar.class);
    expect(startDateMock.clone()).andReturn(startDateCloneMock).once();
    GregorianCalendar currentDateCloneMock = control.createMock(GregorianCalendar.class);
    expect(startDateCloneMock.clone()).andReturn(currentDateCloneMock).once();

    startDateCloneMock.add(Calendar.DAY_OF_MONTH, 1);

    EventBus eventBusMock = control.createMock(EventBus.class);
    eventBusMock.post(anyObject(TimeTickEvent.class));
    expectLastCall().once();

    control.replay();

    TimeManagerImpl manager =
        new TimeManagerImpl(startDateMock, Calendar.DAY_OF_MONTH, 1, eventBusMock);
    Calendar newDate = manager.tick();

    assertEquals(startDateCloneMock, newDate);

    control.verify();
  }
  @Test
  public void testConstructor() {
    int tickLengthUnit = Calendar.DAY_OF_MONTH;
    int tickLength = 1;

    IMocksControl control = createControl();

    GregorianCalendar startDateMock = control.createMock(GregorianCalendar.class);
    GregorianCalendar startDateCloneMock = control.createMock(GregorianCalendar.class);
    expect(startDateMock.clone()).andReturn(startDateCloneMock).once();

    EventBus eventBusMock = control.createMock(EventBus.class);

    control.replay();

    TimeManagerImpl manager =
        new TimeManagerImpl(startDateMock, tickLengthUnit, tickLength, eventBusMock);

    assertSame(startDateMock, manager.getStartDate());
    assertEquals(tickLengthUnit, manager.getTickLengthUnit());
    assertEquals(tickLength, manager.getTickLength());
    assertNotSame(startDateMock, manager.getCurrentDate());
    assertSame(startDateCloneMock, manager.getCurrentDate());

    control.verify();
  }