44//! This module defines the `Percentage` quantity and its operations.
55
66qty_ctor ! {
7- #[ doc = "A quantity representing a percentage (0% to 100%)." ]
7+ #[ doc = "A quantity representing a percentage (typically 0% to 100%)." ]
88 Percentage => {
99 ( from_percentage, as_percentage, "%" , 1.0 ) ,
1010 ( from_fraction, as_fraction, None , 100.0 ) ,
@@ -38,6 +38,15 @@ mod tests {
3838 assert_f32_eq ( perc_2 / perc_1, 1.6 ) ;
3939
4040 assert_f32_eq ( Percentage :: zero ( ) . as_percentage ( ) , 0.0 ) ;
41+
42+ let perc_3 = Percentage :: from_percentage ( 150.0 ) ;
43+ assert_f32_eq ( perc_3. as_fraction ( ) , 1.5 ) ;
44+ let perc_4 = Percentage :: from_fraction ( -0.1 ) ;
45+ assert_f32_eq ( perc_4. as_percentage ( ) , -10.0 ) ;
46+
47+ assert ! ( perc_3 > Percentage :: from_percentage( 100.0 ) ) ;
48+ assert ! ( perc_4 < Percentage :: from_percentage( 0.0 ) ) ;
49+ assert ! ( perc_4 > Percentage :: from_percentage( -20.0 ) ) ;
4150 }
4251
4352 #[ test]
@@ -50,5 +59,8 @@ mod tests {
5059 assert_eq ! ( p( 12.3456 , 4 ) , "12.3456 %" ) ;
5160 assert_eq ! ( p( 12.3456 , 5 ) , "12.3456 %" ) ;
5261 assert_eq ! ( s( 100.0 ) , "100 %" ) ;
62+ assert_eq ! ( s( -5.5 ) , "-5.5 %" ) ;
63+ assert_eq ! ( s( 1234.5678 ) , "1234.568 %" ) ;
64+ assert_eq ! ( p( -1234.5678 , 1 ) , "-1234.6 %" ) ;
5365 }
5466}
0 commit comments