--- /dev/null
+"""
+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()