@@ -38,7 +38,7 @@ struct Reading {
3838 temperature : f64 ,
3939 humidity : f64 ,
4040 pressure : i32 ,
41- dust_concentration : i32 ,
41+ dust_concentration : f64 ,
4242 air_purity : String ,
4343}
4444
@@ -47,7 +47,7 @@ impl Reading {
4747 temperature : f64 ,
4848 humidity : f64 ,
4949 pressure : i32 ,
50- dust_concentration : i32 ,
50+ dust_concentration : f64 ,
5151 air_purity : String ,
5252 ) -> Reading {
5353 Reading {
@@ -69,13 +69,13 @@ enum AirPurity {
6969}
7070
7171impl AirPurity {
72- fn from_value ( value : i32 ) -> AirPurity {
72+ fn from_value ( value : f64 ) -> AirPurity {
7373 match value {
74- i32 :: MIN ..= 50 => return AirPurity :: FreshAir ,
75- 51 ..= 100 => return AirPurity :: Low ,
76- 101 ..= 150 => return AirPurity :: High ,
77- 151 .. => return AirPurity :: Dangerous ,
78- } ;
74+ value if value >= f64 :: MIN && value <= 50.0 => return AirPurity :: FreshAir ,
75+ value if value > 50.0 && value <= 100.0 => return AirPurity :: Low ,
76+ value if value > 100.0 && value <= 150.0 => return AirPurity :: High ,
77+ _ => return AirPurity :: Dangerous ,
78+ }
7979 }
8080}
8181
@@ -111,9 +111,10 @@ fn random_gen_pressure() -> i32 {
111111 rng. gen_range ( 900 ..=1100 )
112112}
113113
114- fn random_gen_dust_concentration ( ) -> i32 {
114+ fn random_gen_dust_concentration ( ) -> f64 {
115115 let mut rng = thread_rng ( ) ;
116- rng. gen_range ( 0 ..=1000 )
116+ let value = rng. gen_range ( 0.0 ..=1000.0 ) ;
117+ f64:: trunc ( value * 100.0 ) / 100.0
117118}
118119
119120pub fn run ( cli : & Cli ) {
@@ -175,10 +176,10 @@ mod tests {
175176 #[ test]
176177 fn air_purity_from_value_returns_correct_enum ( ) {
177178 let mut rng = thread_rng ( ) ;
178- let fresh_air = rng. gen_range ( i32 :: MIN .. =50 ) ;
179- let low = rng. gen_range ( 51 .. =100 ) ;
180- let high = rng. gen_range ( 101 .. =150 ) ;
181- let dangerous = rng. gen_range ( 151 ..i32 :: MAX ) ;
179+ let fresh_air = rng. gen_range ( 0.0 .. =50.0 ) ;
180+ let low = rng. gen_range ( 51.0 .. =100.0 ) ;
181+ let high = rng. gen_range ( 101.0 .. =150.0 ) ;
182+ let dangerous = rng. gen_range ( 151.0 ..f64 :: MAX ) ;
182183
183184 assert_eq ! ( AirPurity :: from_value( fresh_air) , AirPurity :: FreshAir ) ;
184185 assert_eq ! ( AirPurity :: from_value( low) , AirPurity :: Low ) ;
0 commit comments