ppf: Add tests for storage.py functions.
authorRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 16:31:05 +0000 (19:31 +0300)
committerRazvan Deaconescu <razvan.deaconescu@cs.pub.ro>
Sun, 21 Aug 2011 16:31:05 +0000 (19:31 +0300)
ppf/new/tests/test_storage.py [new file with mode: 0644]

diff --git a/ppf/new/tests/test_storage.py b/ppf/new/tests/test_storage.py
new file mode 100644 (file)
index 0000000..ff1851f
--- /dev/null
@@ -0,0 +1,131 @@
+"""
+Test suite for storage. Uses unittest module.
+
+2011, Razvan Deaconescu, razvan.deaconescu@cs.pub.ro.
+"""
+
+import unittest
+import os
+import os.path
+import shutil
+
+import storage
+
+def create_non_numeric_subfolders(path):
+    os.mkdir(os.path.join(path, "ana"))
+    os.mkdir(os.path.join(path, "are"))
+    os.mkdir(os.path.join(path, "mere"))
+    os.mkdir(os.path.join(path, "si"))
+    os.mkdir(os.path.join(path, "pere"))
+
+def create_numeric_subfolders_sequential(path):
+    os.mkdir(os.path.join(path, "1"))
+    os.mkdir(os.path.join(path, "2"))
+    os.mkdir(os.path.join(path, "3"))
+    os.mkdir(os.path.join(path, "4"))
+    os.mkdir(os.path.join(path, "5"))
+
+def create_numeric_subfolders_non_sequential(path):
+    os.mkdir(os.path.join(path, "32"))
+    os.mkdir(os.path.join(path, "5"))
+    os.mkdir(os.path.join(path, "423"))
+    os.mkdir(os.path.join(path, "1401"))
+    os.mkdir(os.path.join(path, "92"))
+
+def create_numeric_files(path):
+    f = open(os.path.join(path, "33"), 'w')
+    f.close()
+    f = open(os.path.join(path, "6"), 'w')
+    f.close()
+    f = open(os.path.join(path, "424"), 'w')
+    f.close()
+    f = open(os.path.join(path, "1402"), 'w')
+    f.close()
+    f = open(os.path.join(path, "93"), 'w')
+    f.close()
+
+class StorageTest(unittest.TestCase):
+    """
+    Test suite for stand alone functions in storage.py.
+    """
+
+    # Class specific variables. Initialized in setUp, used throughout tests.
+    path = "/tmp/ttfa-test"
+
+    def setUp(self):
+        """Create folder."""
+        os.mkdir(self.path)
+
+    def tearDown(self):
+        """Remove base folder."""
+        shutil.rmtree(self.path)
+
+    def test_find_last_numeric_subfolder_no_subfolders(self):
+        """Test return of None when no subfolders are present."""
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, None)
+
+    def test_find_last_numeric_subfolder_no_numeric_subfolders(self):
+        """Test return of None when no numeric subfolders are present."""
+        create_non_numeric_subfolders(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, None)
+
+    def test_find_last_numeric_subfolder_only_numeric_subfolders_sequential(self):
+        """
+        Test return of correct id when sequential numeric named
+        subfolders only are present (1, 2, 3, ...).
+        """
+        create_numeric_subfolders_sequential(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, 5)
+
+    def test_find_last_numeric_subfolder_only_numeric_subfolders_nonsequential(self):
+        """
+        Test return of correct id when nonsequential numeric named
+        subfolders only are present (32, 5, 423, ...).
+        """
+        create_numeric_subfolders_non_sequential(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, 1401)
+
+    def test_find_last_numeric_subfolder_mixed_subfolders_sequential(self):
+        """
+        Test return of None when mixed named subfolders (numeric and
+        others) are present. Numeric folders are sequential.
+        """
+        create_non_numeric_subfolders(self.path)
+        create_numeric_subfolders_sequential(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, 5)
+
+    def test_find_last_numeric_subfolder_mixed_subfolders_nonsequential(self):
+        """
+        Test return of None when mixed named subfolders (numeric and
+        others) are present. Numeric folders are non-sequential.
+        """
+        create_non_numeric_subfolders(self.path)
+        create_numeric_subfolders_non_sequential(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, 1401)
+
+    def test_find_last_numeric_subfolder_mixed_subfolders_files(self):
+        """
+        Test return of None when mixed named subfolders (numeric and
+        others) together with files are present. Numeric folders are
+        non-sequential.
+        """
+        create_non_numeric_subfolders(self.path)
+        create_numeric_subfolders_non_sequential(self.path)
+        create_numeric_files(self.path)
+
+        id = storage.find_last_numeric_subfolder(self.path)
+        self.assertEqual(id, 1401)
+
+if __name__ == "__main__":
+    unittest.main()