@@ -611,6 +611,49 @@ def test_create_from_list_in_multi_resource_yaml_namespaced(self):
611611
612612class TestUtilsUnitTests (unittest .TestCase ):
613613
614+ def test_parse_quantity (self ):
615+ # == trivial returns ==
616+ self .assertEqual (quantity .parse_quantity (Decimal (1 )), Decimal (1 ))
617+ self .assertEqual (quantity .parse_quantity (float (1 )), Decimal (1 ))
618+ self .assertEqual (quantity .parse_quantity (1 ), Decimal (1 ))
619+
620+ # == exceptions ==
621+ self .assertRaises (
622+ ValueError , lambda : quantity .parse_quantity ("1000kb" )
623+ )
624+ self .assertRaises (
625+ ValueError , lambda : quantity .parse_quantity ("1000ki" )
626+ )
627+ self .assertRaises (ValueError , lambda : quantity .parse_quantity ("1000foo" ))
628+ self .assertRaises (ValueError , lambda : quantity .parse_quantity ("foo" ))
629+
630+ # == no suffix ==
631+ self .assertEqual (quantity .parse_quantity ("1000" ), Decimal (1000 ))
632+
633+ # == base 1024 ==
634+ self .assertEqual (quantity .parse_quantity ("1Ki" ), Decimal (1024 ))
635+ self .assertEqual (quantity .parse_quantity ("1Mi" ), Decimal (1024 ** 2 ))
636+ self .assertEqual (quantity .parse_quantity ("1Gi" ), Decimal (1024 ** 3 ))
637+ self .assertEqual (quantity .parse_quantity ("1Ti" ), Decimal (1024 ** 4 ))
638+ self .assertEqual (quantity .parse_quantity ("1Pi" ), Decimal (1024 ** 5 ))
639+ self .assertEqual (quantity .parse_quantity ("1Ei" ), Decimal (1024 ** 6 ))
640+ self .assertEqual (quantity .parse_quantity ("1024Ki" ), Decimal (1024 ** 2 ))
641+ self .assertEqual (quantity .parse_quantity ("0.5Ki" ), Decimal (512 ))
642+
643+ # == base 1000 ==
644+ self .assertAlmostEqual (quantity .parse_quantity ("1n" ), Decimal (0.000_000_001 ))
645+ self .assertAlmostEqual (quantity .parse_quantity ("1u" ), Decimal (0.000_001 ))
646+ self .assertAlmostEqual (quantity .parse_quantity ("1m" ), Decimal (0.001 ))
647+ self .assertEqual (quantity .parse_quantity ("1k" ), Decimal (1_000 ))
648+ self .assertEqual (quantity .parse_quantity ("1M" ), Decimal (1_000_000 ))
649+ self .assertEqual (quantity .parse_quantity ("1G" ), Decimal (1_000_000_000 ))
650+ self .assertEqual (quantity .parse_quantity ("1T" ), Decimal (1_000_000_000_000 ))
651+ self .assertEqual (quantity .parse_quantity ("1P" ), Decimal (1_000_000_000_000_000 ))
652+ self .assertEqual (
653+ quantity .parse_quantity ("1E" ), Decimal (1_000_000_000_000_000_000 ))
654+ self .assertEqual (quantity .parse_quantity ("1000k" ), Decimal (1_000_000 ))
655+ self .assertEqual (quantity .parse_quantity ("500k" ), Decimal (500_000 ))
656+
614657 def test_format_quantity (self ):
615658 """Unit test for quantity.format_quantity. Testing the different SI suffixes and
616659 function should return the expected string"""
0 commit comments