@@ -611,6 +611,49 @@ def test_create_from_list_in_multi_resource_yaml_namespaced(self):
611
611
612
612
class TestUtilsUnitTests (unittest .TestCase ):
613
613
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
+
614
657
def test_format_quantity (self ):
615
658
"""Unit test for quantity.format_quantity. Testing the different SI suffixes and
616
659
function should return the expected string"""
0 commit comments