@@ -569,6 +569,49 @@ def test_create_from_list_in_multi_resource_yaml_namespaced(self):
569
569
570
570
class TestUtilsUnitTests (unittest .TestCase ):
571
571
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
+
572
615
def test_format_quantity (self ):
573
616
"""Unit test for quantity.format_quantity. Testing the different SI suffixes and
574
617
function should return the expected string"""
0 commit comments