1 """ 2 Very minimal unittests for parts of the readline module. 3 4 These tests were added to check that the libedit emulation on OSX and 5 the "real" readline have the same interface for history manipulation. That's 6 why the tests cover only a small subset of the interface. 7 """ 8 import unittest 9 from test.test_support import run_unittest, import_module 10 11 # Skip tests if there is no readline module 12 readline = import_module('readline') 13 14 class TestHistoryManipulation (unittest.TestCase): 15 16 @unittest.skipIf(not hasattr(readline, 'clear_history'), 17 "The history update test cannot be run because the " 18 "clear_history method is not available.") 19 def testHistoryUpdates(self): 20 readline.clear_history() 21 22 readline.add_history("first line") 23 readline.add_history("second line") 24 25 self.assertEqual(readline.get_history_item(0), None) 26 self.assertEqual(readline.get_history_item(1), "first line") 27 self.assertEqual(readline.get_history_item(2), "second line") 28 29 readline.replace_history_item(0, "replaced line") 30 self.assertEqual(readline.get_history_item(0), None) 31 self.assertEqual(readline.get_history_item(1), "replaced line") 32 self.assertEqual(readline.get_history_item(2), "second line") 33 34 self.assertEqual(readline.get_current_history_length(), 2) 35 36 readline.remove_history_item(0) 37 self.assertEqual(readline.get_history_item(0), None) 38 self.assertEqual(readline.get_history_item(1), "second line") 39 40 self.assertEqual(readline.get_current_history_length(), 1) 41 42 43 def test_main(): 44 run_unittest(TestHistoryManipulation) 45 46 if __name__ == "__main__": 47 test_main() 48