diff --git a/test/irb/test_completion.rb b/test/irb/test_completion.rb index 8d7476b8f598af..35c17b23079529 100644 --- a/test/irb/test_completion.rb +++ b/test/irb/test_completion.rb @@ -27,9 +27,54 @@ def test_nonstring_module_name end end - def test_complete_numeric - assert_include(IRB::InputCompletor.retrieve_completion_data("1r.positi", bind: binding), "1r.positive?") - assert_empty(IRB::InputCompletor.retrieve_completion_data("1i.positi", bind: binding)) + class TestMethodCompletion < TestCompletion + def test_complete_string + assert_include(IRB::InputCompletor.retrieve_completion_data("'foo'.up", bind: binding), "'foo'.upcase") + assert_equal(IRB::InputCompletor.retrieve_completion_data("'foo'.upcase", bind: binding, doc_namespace: true), "String.upcase") + end + + def test_complete_regexp + assert_include(IRB::InputCompletor.retrieve_completion_data("/foo/.ma", bind: binding), "/foo/.match") + assert_equal(IRB::InputCompletor.retrieve_completion_data("/foo/.match", bind: binding, doc_namespace: true), "Regexp.match") + end + + def test_complete_array + assert_include(IRB::InputCompletor.retrieve_completion_data("[].an", bind: binding), "[].any?") + assert_equal(IRB::InputCompletor.retrieve_completion_data("[].any?", bind: binding, doc_namespace: true), "Array.any?") + end + + def test_complete_hash_and_proc + # hash + assert_include(IRB::InputCompletor.retrieve_completion_data("{}.an", bind: binding), "{}.any?") + assert_include(IRB::InputCompletor.retrieve_completion_data("{}.any?", bind: binding, doc_namespace: true), "Proc.any?", "Hash.any?") + + # proc + assert_include(IRB::InputCompletor.retrieve_completion_data("{}.bin", bind: binding), "{}.binding") + assert_include(IRB::InputCompletor.retrieve_completion_data("{}.binding", bind: binding, doc_namespace: true), "Proc.binding", "Hash.binding") + end + + def test_complete_numeric + assert_include(IRB::InputCompletor.retrieve_completion_data("1.positi", bind: binding), "1.positive?") + assert_equal(IRB::InputCompletor.retrieve_completion_data("1.positive?", bind: binding, doc_namespace: true), "Integer.positive?") + + assert_include(IRB::InputCompletor.retrieve_completion_data("1r.positi", bind: binding), "1r.positive?") + assert_equal(IRB::InputCompletor.retrieve_completion_data("1r.positive?", bind: binding, doc_namespace: true), "Rational.positive?") + + assert_include(IRB::InputCompletor.retrieve_completion_data("0xFFFF.positi", bind: binding), "0xFFFF.positive?") + assert_equal(IRB::InputCompletor.retrieve_completion_data("0xFFFF.positive?", bind: binding, doc_namespace: true), "Integer.positive?") + + assert_empty(IRB::InputCompletor.retrieve_completion_data("1i.positi", bind: binding)) + end + + def test_complete_symbol + assert_include(IRB::InputCompletor.retrieve_completion_data(":foo.to_p", bind: binding), ":foo.to_proc") + assert_equal(IRB::InputCompletor.retrieve_completion_data(":foo.to_proc", bind: binding, doc_namespace: true), "Symbol.to_proc") + end + + def test_complete_class + assert_include(IRB::InputCompletor.retrieve_completion_data("String.ne", bind: binding), "String.new") + assert_equal(IRB::InputCompletor.retrieve_completion_data("String.new", bind: binding, doc_namespace: true), "String.new") + end end def test_complete_symbol @@ -70,14 +115,6 @@ def test_complete_reserved_words end end - def test_complete_predicate? - candidates = IRB::InputCompletor.retrieve_completion_data("1.posi", bind: binding) - assert_include candidates, '1.positive?' - - namespace = IRB::InputCompletor.retrieve_completion_data("1.positive?", bind: binding, doc_namespace: true) - assert_equal "Integer.positive?", namespace - end - def test_complete_require candidates = IRB::InputCompletor::CompletionProc.("'irb", "require ", "") %w['irb/init 'irb/ruby-lex].each do |word| @@ -204,11 +241,6 @@ def instance_variables; end assert_include(IRB::InputCompletor.retrieve_completion_data("private_hoge", bind: bind, doc_namespace: true), "private_hoge") end - def test_complete_class_method - assert_include(IRB::InputCompletor.retrieve_completion_data("String.new", bind: binding), "String.new") - assert_equal(IRB::InputCompletor.retrieve_completion_data("String.new", bind: binding, doc_namespace: true), "String.new") - end - def test_complete_sort_variables xzy, xzy_1, xzy2 = '', '', ''