### Question:
Statistics { public void register( @Nonnull final StatsType statsType, final long value ) { _probes.get( statsType ).register( value ); } private  Statistics(); static Statistics create(); static Statistics create( final boolean enabled ); void registerSince( @Nonnull final StatsType statsType, final long startInMillis ); void register( @Nonnull final StatsType statsType, final long value ); @Nonnull MinMaxAvgProbe getProbe( @Nonnull final StatsType statsType ); void requestWithoutSession(); long getRequestsWithoutSession(); void requestWithSession(); long getRequestsWithSession(); void requestWithTomcatFailover(); long getRequestsWithTomcatFailover(); void requestWithMemcachedFailover(); long getRequestsWithMemcachedFailover(); void requestWithBackupFailure(); long getRequestsWithBackupFailure(); void requestWithoutSessionAccess(); long getRequestsWithoutSessionAccess(); void requestWithoutAttributesAccess(); long getRequestsWithoutAttributesAccess(); void requestWithoutSessionModification(); long getRequestsWithoutSessionModification(); void nonStickySessionsPingFailed(); long getNonStickySessionsPingFailed(); void nonStickySessionsReadOnlyRequest(); long getNonStickySessionsReadOnlyRequest();  }### Answer:
@Test public void testMinMaxAvgProbe() { final MinMaxAvgProbe cut = new MinMaxAvgProbe(); assertValues( cut, 0, 0, 0, 0 ); cut.register( 1 ); assertValues( cut, 1, 1, 1, 1 ); cut.register( 1 ); assertValues( cut, 2, 1, 1, 1 ); cut.register( 4 ); assertValues( cut, 3, 1, 4, 2 ); cut.register( 0 ); assertValues( cut, 4, 0, 4, 1.5 ); }