@@ -286,14 +286,25 @@ mod tests {
286286 #[ test]
287287 fn it_should_allow_incrementing_a_sample ( ) {
288288 let time = DurationSinceUnixEpoch :: from_secs ( 1_743_552_000 ) ;
289-
290289 let name = metric_name ! ( "test_metric" ) ;
291-
292290 let label_set: LabelSet = [ ( label_name ! ( "server_binding_protocol" ) , LabelValue :: new ( "http" ) ) ] . into ( ) ;
291+ let samples = SampleCollection :: new ( vec ! [ Sample :: new( Counter :: new( 0 ) , time, label_set. clone( ) ) ] ) . unwrap ( ) ;
292+ let mut metric = Metric :: < Counter > :: new ( name. clone ( ) , None , None , samples) ;
293293
294- let samples = SampleCollection :: new ( vec ! [ Sample :: new ( Counter :: new ( 1 ) , time, label_set . clone ( ) ) ] ) . unwrap ( ) ;
294+ metric . increment ( & label_set , time) ;
295295
296- let metric = Metric :: < Counter > :: new ( name. clone ( ) , None , None , samples) ;
296+ assert_eq ! ( metric. get_sample_data( & label_set) . unwrap( ) . value( ) . value( ) , 1 ) ;
297+ }
298+
299+ #[ test]
300+ fn it_should_allow_setting_to_an_absolute_value ( ) {
301+ let time = DurationSinceUnixEpoch :: from_secs ( 1_743_552_000 ) ;
302+ let name = metric_name ! ( "test_metric" ) ;
303+ let label_set: LabelSet = [ ( label_name ! ( "server_binding_protocol" ) , LabelValue :: new ( "http" ) ) ] . into ( ) ;
304+ let samples = SampleCollection :: new ( vec ! [ Sample :: new( Counter :: new( 0 ) , time, label_set. clone( ) ) ] ) . unwrap ( ) ;
305+ let mut metric = Metric :: < Counter > :: new ( name. clone ( ) , None , None , samples) ;
306+
307+ metric. absolute ( & label_set, 1 , time) ;
297308
298309 assert_eq ! ( metric. get_sample_data( & label_set) . unwrap( ) . value( ) . value( ) , 1 ) ;
299310 }
@@ -318,16 +329,40 @@ mod tests {
318329 }
319330
320331 #[ test]
321- fn it_should_allow_setting_a_sample ( ) {
332+ fn it_should_allow_incrementing_a_sample ( ) {
322333 let time = DurationSinceUnixEpoch :: from_secs ( 1_743_552_000 ) ;
323-
324334 let name = metric_name ! ( "test_metric" ) ;
325-
326335 let label_set: LabelSet = [ ( label_name ! ( "server_binding_protocol" ) , LabelValue :: new ( "http" ) ) ] . into ( ) ;
336+ let samples = SampleCollection :: new ( vec ! [ Sample :: new( Gauge :: new( 0.0 ) , time, label_set. clone( ) ) ] ) . unwrap ( ) ;
337+ let mut metric = Metric :: < Gauge > :: new ( name. clone ( ) , None , None , samples) ;
327338
339+ metric. increment ( & label_set, time) ;
340+
341+ assert_relative_eq ! ( metric. get_sample_data( & label_set) . unwrap( ) . value( ) . value( ) , 1.0 ) ;
342+ }
343+
344+ #[ test]
345+ fn it_should_allow_decrement_a_sample ( ) {
346+ let time = DurationSinceUnixEpoch :: from_secs ( 1_743_552_000 ) ;
347+ let name = metric_name ! ( "test_metric" ) ;
348+ let label_set: LabelSet = [ ( label_name ! ( "server_binding_protocol" ) , LabelValue :: new ( "http" ) ) ] . into ( ) ;
328349 let samples = SampleCollection :: new ( vec ! [ Sample :: new( Gauge :: new( 1.0 ) , time, label_set. clone( ) ) ] ) . unwrap ( ) ;
350+ let mut metric = Metric :: < Gauge > :: new ( name. clone ( ) , None , None , samples) ;
329351
330- let metric = Metric :: < Gauge > :: new ( name. clone ( ) , None , None , samples) ;
352+ metric. decrement ( & label_set, time) ;
353+
354+ assert_relative_eq ! ( metric. get_sample_data( & label_set) . unwrap( ) . value( ) . value( ) , 0.0 ) ;
355+ }
356+
357+ #[ test]
358+ fn it_should_allow_setting_a_sample ( ) {
359+ let time = DurationSinceUnixEpoch :: from_secs ( 1_743_552_000 ) ;
360+ let name = metric_name ! ( "test_metric" ) ;
361+ let label_set: LabelSet = [ ( label_name ! ( "server_binding_protocol" ) , LabelValue :: new ( "http" ) ) ] . into ( ) ;
362+ let samples = SampleCollection :: new ( vec ! [ Sample :: new( Gauge :: new( 0.0 ) , time, label_set. clone( ) ) ] ) . unwrap ( ) ;
363+ let mut metric = Metric :: < Gauge > :: new ( name. clone ( ) , None , None , samples) ;
364+
365+ metric. set ( & label_set, 1.0 , time) ;
331366
332367 assert_relative_eq ! ( metric. get_sample_data( & label_set) . unwrap( ) . value( ) . value( ) , 1.0 ) ;
333368 }
0 commit comments