//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldReturnZeroIfNoDataIsAvailable()
        public virtual void ShouldReturnZeroIfNoDataIsAvailable()
        {
            DefaultCheckPointerTracer tracer = new DefaultCheckPointerTracer(_clock, _monitor, _jobScheduler);

            _jobScheduler.runJob();

            assertEquals(0, tracer.NumberOfCheckPointEvents());
            assertEquals(0, tracer.CheckPointAccumulatedTotalTimeMillis());
            verifyZeroInteractions(_monitor);
        }
        private void TriggerEvent(DefaultCheckPointerTracer tracer, int eventDuration)
        {
            _clock.forward(ThreadLocalRandom.current().nextLong(200), TimeUnit.MILLISECONDS);
            using (LogCheckPointEvent @event = tracer.BeginCheckPoint())
            {
                _clock.forward(eventDuration, TimeUnit.MILLISECONDS);
            }

            _jobScheduler.runJob();
        }
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldCountEventsAnAccumulatedTotalTime()
        public virtual void ShouldCountEventsAnAccumulatedTotalTime()
        {
            DefaultCheckPointerTracer tracer = new DefaultCheckPointerTracer(_clock, _monitor, _jobScheduler);

            TriggerEvent(tracer, 20);

            assertEquals(1, tracer.NumberOfCheckPointEvents());
            assertEquals(20, tracer.CheckPointAccumulatedTotalTimeMillis());
            verify(_monitor, times(1)).lastCheckPointEventDuration(20L);

            TriggerEvent(tracer, 30);

            assertEquals(2, tracer.NumberOfCheckPointEvents());
            assertEquals(50, tracer.CheckPointAccumulatedTotalTimeMillis());
            verify(_monitor, times(1)).lastCheckPointEventDuration(30L);
        }