Просмотр исходного кода

Add tests for naturalization functions

Jeremy Stretch 6 лет назад
Родитель
Сommit
92fab048d1
2 измененных файлов с 44 добавлено и 1 удалено
  1. 1 1
      netbox/utilities/ordering.py
  2. 43 0
      netbox/utilities/tests/test_ordering.py

+ 1 - 1
netbox/utilities/ordering.py

@@ -68,7 +68,7 @@ def naturalize_interface(value, max_length=None):
     if match.group('type') is not None:
     if match.group('type') is not None:
         output.append(match.group('type'))
         output.append(match.group('type'))
 
 
-    # Finally, append any remaining fields, left-padding to eight digits each.
+    # Finally, append any remaining fields, left-padding to six digits each.
     for part_name in ('id', 'channel', 'vc'):
     for part_name in ('id', 'channel', 'vc'):
         part = match.group(part_name)
         part = match.group(part_name)
         if part is not None:
         if part is not None:

+ 43 - 0
netbox/utilities/tests/test_ordering.py

@@ -0,0 +1,43 @@
+from django.test import TestCase
+
+from utilities.ordering import naturalize, naturalize_interface
+
+
+class NaturalizationTestCase(TestCase):
+    """
+    Validate the operation of the functions which generate values suitable for natural ordering.
+    """
+    def test_naturalize(self):
+
+        data = (
+            # Original, naturalized
+            ('abc', 'abc'),
+            ('123', '00000123'),
+            ('abc123', 'abc00000123'),
+            ('123abc', '00000123abc'),
+            ('123abc456', '00000123abc00000456'),
+            ('abc123def', 'abc00000123def'),
+            ('abc123def456', 'abc00000123def00000456'),
+        )
+
+        for origin, naturalized in data:
+            self.assertEqual(naturalize(origin), naturalized)
+
+    def test_naturalize_interface(self):
+
+        data = (
+            # Original, naturalized
+            ('Gi', '9999999999999999Gi000000000000000000'),
+            ('Gi1', '9999999999999999Gi000001000000000000'),
+            ('Gi1/2', '0001999999999999Gi000002000000000000'),
+            ('Gi1/2/3', '0001000299999999Gi000003000000000000'),
+            ('Gi1/2/3/4', '0001000200039999Gi000004000000000000'),
+            ('Gi1/2/3/4/5', '0001000200030004Gi000005000000000000'),
+            ('Gi1/2/3/4/5:6', '0001000200030004Gi000005000006000000'),
+            ('Gi1/2/3/4/5:6.7', '0001000200030004Gi000005000006000007'),
+            ('Gi1:2', '9999999999999999Gi000001000002000000'),
+            ('Gi1:2.3', '9999999999999999Gi000001000002000003'),
+        )
+
+        for origin, naturalized in data:
+            self.assertEqual(naturalize_interface(origin), naturalized)