[macruby-changes] [1350] MacRuby/branches/experimental/mspec
source_changes at macosforge.org
source_changes at macosforge.org
Sat Apr 4 15:38:20 PDT 2009
Revision: 1350
http://trac.macosforge.org/projects/ruby/changeset/1350
Author: eloy.de.enige at gmail.com
Date: 2009-04-04 15:38:20 -0700 (Sat, 04 Apr 2009)
Log Message:
-----------
Add have_public_instance_method matcher
Modified Paths:
--------------
MacRuby/branches/experimental/mspec/lib/mspec/matchers.rb
Added Paths:
-----------
MacRuby/branches/experimental/mspec/lib/mspec/matchers/have_public_instance_method.rb
MacRuby/branches/experimental/mspec/spec/matchers/have_public_instance_method_spec.rb
Added: MacRuby/branches/experimental/mspec/lib/mspec/matchers/have_public_instance_method.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/matchers/have_public_instance_method.rb (rev 0)
+++ MacRuby/branches/experimental/mspec/lib/mspec/matchers/have_public_instance_method.rb 2009-04-04 22:38:20 UTC (rev 1350)
@@ -0,0 +1,24 @@
+require 'mspec/matchers/method'
+
+class HavePublicInstanceMethodMatcher < MethodMatcher
+ def matches?(mod)
+ @mod = mod
+ mod.public_instance_methods(@include_super).include? @method
+ end
+
+ def failure_message
+ ["Expected #{@mod} to have public instance method '#{@method.to_s}'",
+ "but it does not"]
+ end
+
+ def negative_failure_message
+ ["Expected #{@mod} NOT to have public instance method '#{@method.to_s}'",
+ "but it does"]
+ end
+end
+
+class Object
+ def have_public_instance_method(method, include_super=true)
+ HavePublicInstanceMethodMatcher.new method, include_super
+ end
+end
Modified: MacRuby/branches/experimental/mspec/lib/mspec/matchers.rb
===================================================================
--- MacRuby/branches/experimental/mspec/lib/mspec/matchers.rb 2009-04-04 22:38:07 UTC (rev 1349)
+++ MacRuby/branches/experimental/mspec/lib/mspec/matchers.rb 2009-04-04 22:38:20 UTC (rev 1350)
@@ -15,6 +15,7 @@
require 'mspec/matchers/have_instance_method'
require 'mspec/matchers/have_method'
require 'mspec/matchers/have_private_instance_method'
+require 'mspec/matchers/have_public_instance_method'
require 'mspec/matchers/include'
require 'mspec/matchers/match_yaml'
require 'mspec/matchers/raise_error'
Added: MacRuby/branches/experimental/mspec/spec/matchers/have_public_instance_method_spec.rb
===================================================================
--- MacRuby/branches/experimental/mspec/spec/matchers/have_public_instance_method_spec.rb (rev 0)
+++ MacRuby/branches/experimental/mspec/spec/matchers/have_public_instance_method_spec.rb 2009-04-04 22:38:20 UTC (rev 1350)
@@ -0,0 +1,53 @@
+require File.dirname(__FILE__) + '/../spec_helper'
+require 'mspec/expectations/expectations'
+require 'mspec/matchers/have_public_instance_method'
+
+class HPIMMSpecs
+ def public_method
+ end
+
+ class Subclass < HPIMMSpecs
+ def public_sub_method
+ end
+ end
+end
+
+describe HavePublicInstanceMethodMatcher do
+ it "inherits from MethodMatcher" do
+ HavePublicInstanceMethodMatcher.new(:m).should be_kind_of(MethodMatcher)
+ end
+
+ it "matches when mod has the public instance method" do
+ matcher = HavePublicInstanceMethodMatcher.new :public_method
+ matcher.matches?(HPIMMSpecs).should be_true
+ matcher.matches?(HPIMMSpecs::Subclass).should be_true
+ end
+
+ it "does not match when mod does not have the public instance method" do
+ matcher = HavePublicInstanceMethodMatcher.new :another_method
+ matcher.matches?(HPIMMSpecs).should be_false
+ end
+
+ it "does not match if the method is in a superclass and include_super is false" do
+ matcher = HavePublicInstanceMethodMatcher.new :public_method, false
+ matcher.matches?(HPIMMSpecs::Subclass).should be_false
+ end
+
+ it "provides a failure message for #should" do
+ matcher = HavePublicInstanceMethodMatcher.new :some_method
+ matcher.matches?(HPIMMSpecs)
+ matcher.failure_message.should == [
+ "Expected HPIMMSpecs to have public instance method 'some_method'",
+ "but it does not"
+ ]
+ end
+
+ it "provides a failure messoge for #should_not" do
+ matcher = HavePublicInstanceMethodMatcher.new :some_method
+ matcher.matches?(HPIMMSpecs)
+ matcher.negative_failure_message.should == [
+ "Expected HPIMMSpecs NOT to have public instance method 'some_method'",
+ "but it does"
+ ]
+ end
+end
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090404/a9d61bd5/attachment.html>
More information about the macruby-changes
mailing list