@@ -569,6 +569,49 @@ def test_create_from_list_in_multi_resource_yaml_namespaced(self):
569569
570570class TestUtilsUnitTests (unittest .TestCase ):
571571
572+ def test_parse_quantity (self ):
573+ # == trivial returns ==
574+ self .assertEqual (quantity .parse_quantity (Decimal (1 )), Decimal (1 ))
575+ self .assertEqual (quantity .parse_quantity (float (1 )), Decimal (1 ))
576+ self .assertEqual (quantity .parse_quantity (1 ), Decimal (1 ))
577+
578+ # == exceptions ==
579+ self .assertRaises (
580+ ValueError , lambda : quantity .parse_quantity ("1000kb" )
581+ )
582+ self .assertRaises (
583+ ValueError , lambda : quantity .parse_quantity ("1000ki" )
584+ )
585+ self .assertRaises (ValueError , lambda : quantity .parse_quantity ("1000foo" ))
586+ self .assertRaises (ValueError , lambda : quantity .parse_quantity ("foo" ))
587+
588+ # == no suffix ==
589+ self .assertEqual (quantity .parse_quantity ("1000" ), Decimal (1000 ))
590+
591+ # == base 1024 ==
592+ self .assertEqual (quantity .parse_quantity ("1Ki" ), Decimal (1024 ))
593+ self .assertEqual (quantity .parse_quantity ("1Mi" ), Decimal (1024 ** 2 ))
594+ self .assertEqual (quantity .parse_quantity ("1Gi" ), Decimal (1024 ** 3 ))
595+ self .assertEqual (quantity .parse_quantity ("1Ti" ), Decimal (1024 ** 4 ))
596+ self .assertEqual (quantity .parse_quantity ("1Pi" ), Decimal (1024 ** 5 ))
597+ self .assertEqual (quantity .parse_quantity ("1Ei" ), Decimal (1024 ** 6 ))
598+ self .assertEqual (quantity .parse_quantity ("1024Ki" ), Decimal (1024 ** 2 ))
599+ self .assertEqual (quantity .parse_quantity ("0.5Ki" ), Decimal (512 ))
600+
601+ # == base 1000 ==
602+ self .assertAlmostEqual (quantity .parse_quantity ("1n" ), Decimal (0.000_000_001 ))
603+ self .assertAlmostEqual (quantity .parse_quantity ("1u" ), Decimal (0.000_001 ))
604+ self .assertAlmostEqual (quantity .parse_quantity ("1m" ), Decimal (0.001 ))
605+ self .assertEqual (quantity .parse_quantity ("1k" ), Decimal (1_000 ))
606+ self .assertEqual (quantity .parse_quantity ("1M" ), Decimal (1_000_000 ))
607+ self .assertEqual (quantity .parse_quantity ("1G" ), Decimal (1_000_000_000 ))
608+ self .assertEqual (quantity .parse_quantity ("1T" ), Decimal (1_000_000_000_000 ))
609+ self .assertEqual (quantity .parse_quantity ("1P" ), Decimal (1_000_000_000_000_000 ))
610+ self .assertEqual (
611+ quantity .parse_quantity ("1E" ), Decimal (1_000_000_000_000_000_000 ))
612+ self .assertEqual (quantity .parse_quantity ("1000k" ), Decimal (1_000_000 ))
613+ self .assertEqual (quantity .parse_quantity ("500k" ), Decimal (500_000 ))
614+
572615 def test_format_quantity (self ):
573616 """Unit test for quantity.format_quantity. Testing the different SI suffixes and
574617 function should return the expected string"""
0 commit comments