diff options
author | Lars Wirzenius <liw@liw.fi> | 2011-03-20 10:52:09 +0000 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2011-03-20 10:52:09 +0000 |
commit | 97ac6cd06454dda91a3ad6131f578d3622678de7 (patch) | |
tree | 9c76e22b2c04d8762900a4d6a959bea74c243475 /summainlib_tests.py | |
parent | b74b5d783c718111cf9b346e0218a75735f4a791 (diff) | |
download | summain-97ac6cd06454dda91a3ad6131f578d3622678de7.tar.gz |
Add a class for normalizing paths.
Diffstat (limited to 'summainlib_tests.py')
-rw-r--r-- | summainlib_tests.py | 61 |
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') + |