Skip to content

Instantly share code, notes, and snippets.

@calavera
Created September 9, 2009 14:19
Show Gist options
  • Save calavera/183754 to your computer and use it in GitHub Desktop.
Save calavera/183754 to your computer and use it in GitHub Desktop.
From 1e3fc7d16c791147e769d49ab8f9b14a5bae1498 Mon Sep 17 00:00:00 2001
From: David Calavera <[email protected]>
Date: Thu, 10 Sep 2009 18:40:24 +0200
Subject: [PATCH] added Enumerator#with_object and Enumerator#each_with_object specs
---
core/enumerator/each_with_object_spec.rb | 8 ++++++++
core/enumerator/with_object_spec.rb | 8 ++++++++
shared/enumerator/with_object.rb | 19 +++++++++++++++++++
3 files changed, 35 insertions(+), 0 deletions(-)
create mode 100644 core/enumerator/each_with_object_spec.rb
create mode 100644 core/enumerator/with_object_spec.rb
create mode 100644 shared/enumerator/with_object.rb
diff --git a/core/enumerator/each_with_object_spec.rb b/core/enumerator/each_with_object_spec.rb
new file mode 100644
index 0000000..a765470
--- /dev/null
+++ b/core/enumerator/each_with_object_spec.rb
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/../../shared/enumerator/with_object.rb'
+
+ruby_version_is "1.9" do
+ describe "Enumerator#each_with_object" do
+ it_behaves_like :enum_with_object, :each_with_object
+ end
+end
diff --git a/core/enumerator/with_object_spec.rb b/core/enumerator/with_object_spec.rb
new file mode 100644
index 0000000..0910246
--- /dev/null
+++ b/core/enumerator/with_object_spec.rb
@@ -0,0 +1,8 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+require File.dirname(__FILE__) + '/../../shared/enumerator/with_object.rb'
+
+ruby_version_is "1.9" do
+ describe "Enumerator#with_object" do
+ it_behaves_like :enum_with_object, :with_object
+ end
+end
diff --git a/shared/enumerator/with_object.rb b/shared/enumerator/with_object.rb
new file mode 100644
index 0000000..6e5745f
--- /dev/null
+++ b/shared/enumerator/with_object.rb
@@ -0,0 +1,19 @@
+require File.dirname(__FILE__) + '/../../spec_helper'
+
+describe :enum_with_object, :shared => true do
+ it "returns an enumerator when not given a block" do
+ [].to_enum.send(@method, '').should be_an_instance_of(Enumerator)
+ end
+
+ it "returns the given object when given a block" do
+ object = [].to_enum.send(@method, 'wadus') {|i, o| o = o + o}
+ object.should == 'wadus'
+ end
+
+ it "iterates over the array adding the given object" do
+ expected = ''
+ %w|wadus wadus|.each.send(@method, ' ') {|e, o| expected += e + o}
+
+ expected.should == 'wadus wadus '
+ end
+end
\ No newline at end of file
--
1.6.0.3
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment