--- /dev/null
+--TEST--
+readline_callback_handler_install(): Basic test
+--FILE--
+<?php
+
+function foo() {
+ readline_callback_handler_remove();
+}
+
+var_dump(readline_callback_handler_install('testing: ', 'foo'));
+var_dump(readline_callback_handler_install('testing: ', 'foobar!'));
+var_dump(readline_callback_handler_install('testing: '));
+
+?>
+--EXPECTF--
+testing: bool(true)
+
+Warning: readline_callback_handler_install(): foobar! is not callable in %s on line %d
+bool(false)
+
+Warning: readline_callback_handler_install() expects exactly 2 parameters, 1 given in %s on line %d
+NULL
--- /dev/null
+--TEST--
+readline_callback_handler_remove(): Basic test
+--FILE--
+<?php
+
+var_dump(readline_callback_handler_remove());
+var_dump(readline_callback_handler_install('testing: ', 'foo'));
+
+function foo() { }
+var_dump(readline_callback_handler_install('testing: ', 'foo'));
+var_dump(readline_callback_handler_remove());
+
+?>
+--EXPECT--
+bool(false)
+testing: bool(true)
+testing: bool(true)
+bool(true)
--- /dev/null
+--TEST--
+readline_read_history(): Basic test
+--FILE--
+<?php
+
+$name = tempnam('/tmp', 'readline.tmp');
+
+readline_add_history("foo\n");
+
+var_dump(readline_write_history($name));
+
+var_dump(readline_clear_history());
+
+var_dump(readline_read_history($name));
+
+var_dump(readline_list_history());
+
+unlink($name);
+
+?>
+--EXPECT--
+bool(true)
+bool(true)
+bool(true)
+array(1) {
+ [0]=>
+ string(3) "foo"
+}