/
object_mission_test.rb
63 lines (54 loc) · 2.15 KB
/
object_mission_test.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
require File.join(File.dirname(__FILE__), 'test_helper')
class Bond::ObjectMissionTest < Test::Unit::TestCase
before(:all) {|e| Bond.debrief(:readline_plugin=>valid_readline_plugin) }
before(:each) {|e| Bond.agent.reset }
context "object mission" do
test "with default action completes" do
complete(:object=>"String")
complete(:on=>/man/) { %w{upper upster upful}}
tabtab("'man'.u").should == [".upcase!", ".unpack", ".untaint", ".upcase", ".upto"]
end
test "with regex condition completes" do
complete(:object=>/Str/) {|e| e.object.class.superclass.instance_methods(true) }
complete(:on=>/man/) { %w{upper upster upful}}
tabtab("'man'.u").should == [".untaint"]
end
test "with explicit action completes" do
complete(:object=>"String") {|e| e.object.class.superclass.instance_methods(true) }
complete(:on=>/man/) { %w{upper upster upful}}
tabtab("'man'.u").should == [".untaint"]
end
test "completes without including word break characters" do
complete(:object=>"Hash")
matches = tabtab("{}.f")
assert matches.size > 0
matches.all? {|e| !e.include?('{')}.should == true
end
test "completes nil, false and range objects" do
complete(:object=>"Object")
assert tabtab("nil.f").size > 0
assert tabtab("false.f").size > 0
assert tabtab("(1..10).f").size > 0
end
test "completes hashes and arrays with spaces" do
complete(:object=>"Object")
assert tabtab("[1, 2].f").size > 0
assert tabtab("{:a =>1}.f").size > 0
end
test "ignores invalid invalid ruby" do
complete(:object=>"String")
tabtab("blah.upt").should == []
end
# needed to ensure Bond works in irbrc
test "doesn't evaluate irb binding on definition" do
Object.expects(:const_defined?).never
complete(:object=>"String")
end
test "sets binding to toplevel binding when not in irb" do
Object.expects(:const_defined?).with(:IRB).returns(false)
mission = Bond::Mission.create(:object=>'Symbol')
mission.class.expects(:eval).with(anything, ::TOPLEVEL_BINDING)
mission.matches?(':ok.')
end
end
end