summaryrefslogtreecommitdiff
path: root/summainlib_tests.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2011-03-20 10:52:09 +0000
committerLars Wirzenius <liw@liw.fi>2011-03-20 10:52:09 +0000
commit97ac6cd06454dda91a3ad6131f578d3622678de7 (patch)
tree9c76e22b2c04d8762900a4d6a959bea74c243475 /summainlib_tests.py
parentb74b5d783c718111cf9b346e0218a75735f4a791 (diff)
downloadsummain-97ac6cd06454dda91a3ad6131f578d3622678de7.tar.gz
Add a class for normalizing paths.
Diffstat (limited to 'summainlib_tests.py')
-rw-r--r--summainlib_tests.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/summainlib_tests.py b/summainlib_tests.py
index 283c22b..b6b0dea 100644
--- a/summainlib_tests.py
+++ b/summainlib_tests.py
@@ -215,3 +215,64 @@ class NumberNormalizerTests(unittest.TestCase):
def test_returns_1_1_1_when_input_number_is_repeated(self):
self.assertEqual([self.nn.get_ino(i) for i in [10, 10, 10]],
[1, 1, 1])
+
+
+class PathNormalizerTests(unittest.TestCase):
+
+ def setUp(self):
+ self.pn = summainlib.PathNormalizer()
+
+ def test_returns_different_paths_for_different_inputs(self):
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+ self.assertEqual(self.pn.normalize('/ping/pong'), '/c/d')
+
+ def test_returns_same_paths_for_same_input(self):
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+
+ def test_returns_same_parent_path_for_siblings(self):
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+ self.assertEqual(self.pn.normalize('/foo/yo'), '/a/c')
+ self.assertEqual(self.pn.normalize('/foo'), '/a')
+
+ def test_handles_trailing_slashes(self):
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+ self.assertEqual(self.pn.normalize('/foo/bar/'), '/a/b/')
+
+ def test_handles_relative_paths(self):
+ self.assertEqual(self.pn.normalize('foo/bar'), 'a/b')
+ self.assertEqual(self.pn.normalize('/foo/bar'), '/a/b')
+
+ def test_handles_dot(self):
+ self.assertEqual(self.pn.normalize('.'), '.')
+
+ def test_handles_dotdot(self):
+ self.assertEqual(self.pn.normalize('..'), '..')
+
+ def test_splits_root(self):
+ self.assertEqual(self.pn.split('/'), ['/'])
+
+ def test_splits_absolute_path(self):
+ self.assertEqual(self.pn.split('/foo/bar'), ['/', 'foo', 'bar'])
+
+ def test_splits_trailing_slash(self):
+ self.assertEqual(self.pn.split('/foo/'), ['/', 'foo', '/'])
+ self.assertEqual(self.pn.split('/foo/bar/'), ['/', 'foo', 'bar', '/'])
+
+ def test_splits_relative_path(self):
+ self.assertEqual(self.pn.split('foo/bar'), ['foo', 'bar'])
+
+ def test_normalizes_slash_to_itself(self):
+ self.assertEqual(self.pn.normalize_part('/'), '/')
+
+ def test_normalizes_first_part_to_a(self):
+ self.assertEqual(self.pn.normalize_part('foo'), 'a')
+
+ def test_normalizes_second_part_to_b(self):
+ self.pn.normalize_part('foo')
+ self.assertEqual(self.pn.normalize_part('bar'), 'b')
+
+ def test_normalizes_same_part_twice_to_same_result(self):
+ self.pn.normalize_part('foo')
+ self.assertEqual(self.pn.normalize_part('foo'), 'a')
+