test/object_mission_test.rb in bond-0.1.1 vs test/object_mission_test.rb in bond-0.1.3
- old
+ new
@@ -1,43 +1,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.instance_eval("@missions = []") }
+ before(:each) {|e| Bond.agent.reset }
context "object mission" do
test "with default action completes" do
- Bond.complete(:object=>"String")
- Bond.complete(:on=>/man/) { %w{upper upster upful}}
- complete("'man'.u").should == ["'man'.upcase!", "'man'.unpack", "'man'.untaint", "'man'.upcase", "'man'.upto"]
+ 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
- Bond.complete(:object=>/Str/) {|e| e.object.class.superclass.instance_methods(true) }
- Bond.complete(:on=>/man/) { %w{upper upster upful}}
- complete("'man'.u").should == ["'man'.untaint"]
+ 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
- Bond.complete(:object=>"String") {|e| e.object.class.superclass.instance_methods(true) }
- Bond.complete(:on=>/man/) { %w{upper upster upful}}
- complete("'man'.u").should == ["'man'.untaint"]
+ 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
- Bond.complete(:object=>"String")
- complete("blah.upt").should == []
+ 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
- Bond.complete(:object=>"String")
+ 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.')
- mission.eval_binding.should == ::TOPLEVEL_BINDING
end
end
end
\ No newline at end of file