summary refs log tree commit diff stats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/__init__.py0
-rwxr-xr-xtest/all_benchmarks.py8
-rwxr-xr-xtest/all_tests.py6
-rw-r--r--test/bm_human_readable.py51
-rw-r--r--test/bm_loader.py6
l---------test/ranger1
-rw-r--r--test/tc_bookmarks.py6
-rw-r--r--test/tc_colorscheme.py6
-rw-r--r--test/tc_direction.py6
-rw-r--r--test/tc_directory.py5
-rw-r--r--test/tc_displayable.py6
-rw-r--r--test/tc_ext.py6
-rw-r--r--test/tc_history.py33
-rw-r--r--test/tc_human_readable.py51
-rw-r--r--test/tc_keyapi.py6
-rw-r--r--test/tc_loader.py6
-rw-r--r--test/tc_newkeys.py10
-rw-r--r--test/tc_relative_symlink.py47
-rw-r--r--test/tc_signal.py6
-rw-r--r--test/tc_ui.py6
-rw-r--r--test/tc_utfwidth.py8
21 files changed, 268 insertions, 12 deletions
diff --git a/test/__init__.py b/test/__init__.py
deleted file mode 100644
index e69de29b..00000000
--- a/test/__init__.py
+++ /dev/null
diff --git a/test/all_benchmarks.py b/test/all_benchmarks.py
index 20f11ad8..a3612701 100755
--- a/test/all_benchmarks.py
+++ b/test/all_benchmarks.py
@@ -19,9 +19,13 @@ Run all the benchmarks inside this directory.
 Usage: ./all_benchmarks.py [count] [regexp-filters...]
 """
 
-import os
-import re
+import os.path
 import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
+import re
 import time
 
 if __name__ == '__main__':
diff --git a/test/all_tests.py b/test/all_tests.py
index 7cfc855f..0c184df5 100755
--- a/test/all_tests.py
+++ b/test/all_tests.py
@@ -19,8 +19,12 @@ Run all the tests inside this directory as a test suite.
 Usage: ./all_tests.py [verbosity]
 """
 
-import os
+import os.path
 import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 
 if __name__ == '__main__':
diff --git a/test/bm_human_readable.py b/test/bm_human_readable.py
new file mode 100644
index 00000000..ef400774
--- /dev/null
+++ b/test/bm_human_readable.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
+from ranger.ext.human_readable import *
+
+# The version before 2010/06/24:
+import math
+UNITS = 'BKMGTP'
+MAX_EXPONENT = len(UNITS) - 1
+def human_readable_old(byte, seperator=' '):
+	if not byte:
+		return '0'
+
+	exponent = int(math.log(byte, 2) / 10)
+	flt = round(float(byte) / (1 << (10 * exponent)), 2)
+
+	if exponent > MAX_EXPONENT:
+		return '>9000' # off scale
+
+	if int(flt) == flt:
+		return '%.0f%s%s' % (flt, seperator, UNITS[exponent])
+
+	else:
+		return '%.2f%s%s' % (flt, seperator, UNITS[exponent])
+
+class benchmark_human_readable(object):
+	def bm_current(self, n):
+		for i in range(n):
+			human_readable((128 * i) % 2**50)
+
+	def bm_old(self, n):
+		for i in range(n):
+			human_readable_old((128 * i) % 2**50)
diff --git a/test/bm_loader.py b/test/bm_loader.py
index 968640a5..552954a7 100644
--- a/test/bm_loader.py
+++ b/test/bm_loader.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from ranger.core.loader import Loader
 from ranger.fsobject import Directory, File
 from ranger.ext.openstruct import OpenStruct
diff --git a/test/ranger b/test/ranger
deleted file mode 120000
index 5459458c..00000000
--- a/test/ranger
+++ /dev/null
@@ -1 +0,0 @@
-../ranger
\ No newline at end of file
diff --git a/test/tc_bookmarks.py b/test/tc_bookmarks.py
index 9b41f1c6..59435f06 100644
--- a/test/tc_bookmarks.py
+++ b/test/tc_bookmarks.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from os.path import realpath, join, dirname
 import unittest
 import os
diff --git a/test/tc_colorscheme.py b/test/tc_colorscheme.py
index 8d6adee6..eefb1e4f 100644
--- a/test/tc_colorscheme.py
+++ b/test/tc_colorscheme.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from unittest import TestCase, main
 import random
 import ranger.colorschemes
diff --git a/test/tc_direction.py b/test/tc_direction.py
index 5c1776cf..16c26dab 100644
--- a/test/tc_direction.py
+++ b/test/tc_direction.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 from ranger.ext.direction import Direction
 from ranger.ext.openstruct import OpenStruct
diff --git a/test/tc_directory.py b/test/tc_directory.py
index a702c4db..754253b3 100644
--- a/test/tc_directory.py
+++ b/test/tc_directory.py
@@ -13,7 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
 import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from os.path import realpath, join, dirname
 
 from ranger import fsobject
diff --git a/test/tc_displayable.py b/test/tc_displayable.py
index 1c66a40e..72e0507d 100644
--- a/test/tc_displayable.py
+++ b/test/tc_displayable.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 import curses
 from random import randint
diff --git a/test/tc_ext.py b/test/tc_ext.py
index 919f35a2..495591a1 100644
--- a/test/tc_ext.py
+++ b/test/tc_ext.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 from collections import deque
 
diff --git a/test/tc_history.py b/test/tc_history.py
index 33784e14..02a8bb9f 100644
--- a/test/tc_history.py
+++ b/test/tc_history.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from ranger.container import History
 from unittest import TestCase, main
 import unittest
@@ -27,13 +33,13 @@ class Test(TestCase):
 		hist.back()
 
 		self.assertEqual(4, hist.current())
-		self.assertEqual([3,4], list(hist))
+		self.assertEqual([3,4], list(hist._left()))
 
 		self.assertEqual(5, hist.top())
 
 		hist.back()
 		self.assertEqual(3, hist.current())
-		self.assertEqual([3], list(hist))
+		self.assertEqual([3], list(hist._left()))
 
 		# no change if current == bottom
 		self.assertEqual(hist.current(), hist.bottom())
@@ -46,12 +52,31 @@ class Test(TestCase):
 		hist.forward()
 		hist.forward()
 		self.assertEqual(5, hist.current())
-		self.assertEqual([3,4,5], list(hist))
+		self.assertEqual([3,4,5], list(hist._left()))
 
 
 		self.assertEqual(3, hist.bottom())
 		hist.add(6)
 		self.assertEqual(4, hist.bottom())
-		self.assertEqual([4,5,6], list(hist))
+		self.assertEqual([4,5,6], list(hist._left()))
+
+		hist.back()
+		hist.fast_forward()
+		self.assertEqual([4,5,6], list(hist._left()))
+		hist.back()
+		hist.back()
+		hist.fast_forward()
+		self.assertEqual([4,5,6], list(hist._left()))
+		hist.back()
+		hist.back()
+		hist.back()
+		hist.fast_forward()
+		self.assertEqual([4,5,6], list(hist._left()))
+		hist.back()
+		hist.back()
+		hist.back()
+		hist.back()
+		hist.fast_forward()
+		self.assertEqual([4,5,6], list(hist._left()))
 
 if __name__ == '__main__': main()
diff --git a/test/tc_human_readable.py b/test/tc_human_readable.py
new file mode 100644
index 00000000..493e6d3a
--- /dev/null
+++ b/test/tc_human_readable.py
@@ -0,0 +1,51 @@
+# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
+import unittest
+from ranger.ext.human_readable import human_readable as hr
+
+class HumanReadableTest(unittest.TestCase):
+	def test_basic(self):
+		self.assertEqual("0", hr(0))
+		self.assertEqual("1 B", hr(1))
+		self.assertEqual("1 K", hr(2 ** 10))
+		self.assertEqual("1 M", hr(2 ** 20))
+		self.assertEqual("1 G", hr(2 ** 30))
+		self.assertEqual(">9000", hr(2 ** 100))
+
+	def test_big(self):
+		self.assertEqual("1023 G", hr(2 ** 30 * 1023))
+		self.assertEqual("1024 G", hr(2 ** 40 - 1))
+		self.assertEqual("1 T",    hr(2 ** 40))
+
+	def test_small(self):
+		self.assertEqual("1000 B", hr(1000))
+		self.assertEqual("1.66 M", hr(1.66 * 2 ** 20))
+		self.assertEqual("1.46 K", hr(1500))
+		self.assertEqual("1.5 K",  hr(2 ** 10 + 2 ** 9))
+		self.assertEqual("1.5 K",  hr(2 ** 10 + 2 ** 9 - 1))
+
+	def test_no_exponent(self):
+		for i in range(2 ** 10, 2 ** 20, 512):
+			self.assertTrue('e' not in hr(i), "%d => %s" % (i, hr(i)))
+
+if __name__ == '__main__':
+	unittest.main()
diff --git a/test/tc_keyapi.py b/test/tc_keyapi.py
index 48282a7d..79d89fa5 100644
--- a/test/tc_keyapi.py
+++ b/test/tc_keyapi.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 from unittest import TestCase, main
 
 class Test(TestCase):
diff --git a/test/tc_loader.py b/test/tc_loader.py
index 9f7f7322..5a2e5a68 100644
--- a/test/tc_loader.py
+++ b/test/tc_loader.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 import os
 from os.path import realpath, join, dirname
diff --git a/test/tc_newkeys.py b/test/tc_newkeys.py
index fd856f17..c9597201 100644
--- a/test/tc_newkeys.py
+++ b/test/tc_newkeys.py
@@ -12,7 +12,13 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+sys.path[1:1] = ['..']
 
 from unittest import TestCase, main
 
@@ -22,8 +28,6 @@ from ranger.container.keymap import *
 from ranger.container.keybuffer import KeyBuffer
 from ranger.ext.keybinding_parser import parse_keybinding
 
-import sys
-
 def simulate_press(self, string):
 	for char in parse_keybinding(string):
 		self.add(char)
diff --git a/test/tc_relative_symlink.py b/test/tc_relative_symlink.py
new file mode 100644
index 00000000..a202513d
--- /dev/null
+++ b/test/tc_relative_symlink.py
@@ -0,0 +1,47 @@
+# Copyright (C) 2009, 2010  Roman Zimbelmann <romanz@lavabit.com>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
+import unittest
+from ranger.ext.relative_symlink import *
+rel = get_relative_source_file
+
+class Test(unittest.TestCase):
+	def test_foo(self):
+		self.assertEqual('../foo', rel('/foo', '/x/bar'))
+		self.assertEqual('../../foo', rel('/foo', '/x/y/bar'))
+		self.assertEqual('../../a/b/foo', rel('/a/b/foo', '/x/y/bar'))
+		self.assertEqual('../../x/b/foo', rel('/x/b/foo', '/x/y/bar',
+			common_base='/'))
+		self.assertEqual('../b/foo', rel('/x/b/foo', '/x/y/bar'))
+		self.assertEqual('../b/foo', rel('/x/b/foo', '/x/y/bar'))
+
+	def test_get_common_base(self):
+		self.assertEqual('/', get_common_base('', ''))
+		self.assertEqual('/', get_common_base('', '/'))
+		self.assertEqual('/', get_common_base('/', ''))
+		self.assertEqual('/', get_common_base('/', '/'))
+		self.assertEqual('/', get_common_base('/bla/bar/x', '/foo/bar/a'))
+		self.assertEqual('/foo/bar/', get_common_base('/foo/bar/x', '/foo/bar/a'))
+		self.assertEqual('/foo/', get_common_base('/foo/bar/x', '/foo/baz/a'))
+		self.assertEqual('/foo/', get_common_base('/foo/bar/x', '/foo/baz/a'))
+		self.assertEqual('/', get_common_base('//foo/bar/x', '/foo/baz/a'))
+
+if __name__ == '__main__': unittest.main()
diff --git a/test/tc_signal.py b/test/tc_signal.py
index f31681f4..3b1bac40 100644
--- a/test/tc_signal.py
+++ b/test/tc_signal.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 import gc
 from ranger.ext.signal_dispatcher import *
diff --git a/test/tc_ui.py b/test/tc_ui.py
index dc8d669d..fa2bdcac 100644
--- a/test/tc_ui.py
+++ b/test/tc_ui.py
@@ -13,6 +13,12 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+
 import unittest
 import curses
 
diff --git a/test/tc_utfwidth.py b/test/tc_utfwidth.py
index 2aa5fa6d..0288c17b 100644
--- a/test/tc_utfwidth.py
+++ b/test/tc_utfwidth.py
@@ -12,7 +12,13 @@
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
-# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+import os.path
+import sys
+rangerpath = os.path.join(os.path.dirname(__file__), '..')
+if sys.path[1] != rangerpath:
+	sys.path[1:1] = [rangerpath]
+sys.path[1:1] = ['..']
 
 from unittest import TestCase, main
 from ranger.ext.utfwidth import *