From b7e5e578797cb3369aa88f34933d527a9c7b3d42 Mon Sep 17 00:00:00 2001 From: Razvan Deaconescu Date: Sun, 21 Aug 2011 19:31:05 +0300 Subject: [PATCH] ppf: Add tests for storage.py functions. --- ppf/new/tests/test_storage.py | 131 ++++++++++++++++++++++++++++++++++ 1 file changed, 131 insertions(+) create mode 100644 ppf/new/tests/test_storage.py diff --git a/ppf/new/tests/test_storage.py b/ppf/new/tests/test_storage.py new file mode 100644 index 0000000..ff1851f --- /dev/null +++ b/ppf/new/tests/test_storage.py @@ -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() -- 2.20.1