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 def testHistoryUpdates(self): 16 readline.clear_history() 17 18 readline.add_history("first line") 19 readline.add_history("second line") 20 21 self.assertEqual(readline.get_history_item(0), None) 22 self.assertEqual(readline.get_history_item(1), "first line") 23 self.assertEqual(readline.get_history_item(2), "second line") 24 25 readline.replace_history_item(0, "replaced line") 26 self.assertEqual(readline.get_history_item(0), None) 27 self.assertEqual(readline.get_history_item(1), "replaced line") 28 self.assertEqual(readline.get_history_item(2), "second line") 29 30 self.assertEqual(readline.get_current_history_length(), 2) 31 32 readline.remove_history_item(0) 33 self.assertEqual(readline.get_history_item(0), None) 34 self.assertEqual(readline.get_history_item(1), "second line") 35 36 self.assertEqual(readline.get_current_history_length(), 1) 37 38 39 def test_main(): 40 run_unittest(TestHistoryManipulation) 41 42 if __name__ == "__main__": 43 test_main() 44