spec/kitchen/lazy_hash_spec.rb in test-kitchen-1.10.1 vs spec/kitchen/lazy_hash_spec.rb in test-kitchen-1.10.2.dev
- old
+ new
@@ -1,117 +1,117 @@
-# -*- encoding: utf-8 -*-
-#
-# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
-#
-# Copyright (C) 2013, Fletcher Nichol
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require_relative "../spec_helper"
-
-require "kitchen/lazy_hash"
-
-describe Kitchen::LazyHash do
-
- let(:context) do
- stub(:color => "blue", :metal => "heavy")
- end
-
- let(:hash_obj) do
- {
- :shed_color => ->(c) { c.color },
- :barn => "locked",
- :genre => proc { |c| "#{c.metal} metal" }
- }
- end
-
- describe "#[]" do
-
- it "returns regular values for keys" do
- Kitchen::LazyHash.new(hash_obj, context)[:barn].must_equal "locked"
- end
-
- it "invokes call on values that are lambdas" do
- Kitchen::LazyHash.new(hash_obj, context)[:shed_color].must_equal "blue"
- end
-
- it "invokes call on values that are Procs" do
- Kitchen::LazyHash.new(hash_obj, context)[:genre].must_equal "heavy metal"
- end
- end
-
- describe "#fetch" do
-
- it "returns regular hash values for keys" do
- Kitchen::LazyHash.new(hash_obj, context).fetch(:barn).must_equal "locked"
- end
-
- it "invokes call on values that are lambdas" do
- Kitchen::LazyHash.new(hash_obj, context).
- fetch(:shed_color).must_equal "blue"
- end
-
- it "invokes call on values that are Procs" do
- Kitchen::LazyHash.new(hash_obj, context).
- fetch(:genre).must_equal "heavy metal"
- end
-
- it "uses a default value for unset values" do
- Kitchen::LazyHash.new(hash_obj, context).
- fetch(:nope, "candy").must_equal "candy"
- end
-
- it "uses a block for unset values" do
- Kitchen::LazyHash.new(hash_obj, context).
- fetch(:nope) { |key| "#{key} is costly" }.must_equal "nope is costly"
- end
- end
-
- describe "#to_hash" do
-
- it "invokes any callable values and returns a Hash object" do
- converted = Kitchen::LazyHash.new(hash_obj, context).to_hash
-
- converted.must_be_instance_of Hash
- converted.fetch(:shed_color).must_equal "blue"
- converted.fetch(:barn).must_equal "locked"
- converted.fetch(:genre).must_equal "heavy metal"
- end
- end
-
- describe "select" do
- it "calls Procs when appropriate" do
- Kitchen::LazyHash.new(hash_obj, context).select { |_, _| true }.
- must_equal :shed_color => "blue", :barn => "locked", :genre => "heavy metal"
- end
- end
-
- describe "enumerable" do
- it "is an Enumerable" do
- assert Kitchen::LazyHash.new(hash_obj, context).is_a? Enumerable
- end
-
- it "returns an Enumerator from each() if no block given" do
- e = Kitchen::LazyHash.new(hash_obj, context).each
- e.is_a? Enumerator
- e.next.must_equal [:shed_color, "blue"]
- e.next.must_equal [:barn, "locked"]
- e.next.must_equal [:genre, "heavy metal"]
- end
-
- it "yields each item to the block if a block is given to each()" do
- items = []
- Kitchen::LazyHash.new(hash_obj, context).each { |i| items << i }
- items.must_equal [[:shed_color, "blue"], [:barn, "locked"], [:genre, "heavy metal"]]
- end
- end
-end
+# -*- encoding: utf-8 -*-
+#
+# Author:: Fletcher Nichol (<fnichol@nichol.ca>)
+#
+# Copyright (C) 2013, Fletcher Nichol
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+require_relative "../spec_helper"
+
+require "kitchen/lazy_hash"
+
+describe Kitchen::LazyHash do
+
+ let(:context) do
+ stub(:color => "blue", :metal => "heavy")
+ end
+
+ let(:hash_obj) do
+ {
+ :shed_color => ->(c) { c.color },
+ :barn => "locked",
+ :genre => proc { |c| "#{c.metal} metal" }
+ }
+ end
+
+ describe "#[]" do
+
+ it "returns regular values for keys" do
+ Kitchen::LazyHash.new(hash_obj, context)[:barn].must_equal "locked"
+ end
+
+ it "invokes call on values that are lambdas" do
+ Kitchen::LazyHash.new(hash_obj, context)[:shed_color].must_equal "blue"
+ end
+
+ it "invokes call on values that are Procs" do
+ Kitchen::LazyHash.new(hash_obj, context)[:genre].must_equal "heavy metal"
+ end
+ end
+
+ describe "#fetch" do
+
+ it "returns regular hash values for keys" do
+ Kitchen::LazyHash.new(hash_obj, context).fetch(:barn).must_equal "locked"
+ end
+
+ it "invokes call on values that are lambdas" do
+ Kitchen::LazyHash.new(hash_obj, context).
+ fetch(:shed_color).must_equal "blue"
+ end
+
+ it "invokes call on values that are Procs" do
+ Kitchen::LazyHash.new(hash_obj, context).
+ fetch(:genre).must_equal "heavy metal"
+ end
+
+ it "uses a default value for unset values" do
+ Kitchen::LazyHash.new(hash_obj, context).
+ fetch(:nope, "candy").must_equal "candy"
+ end
+
+ it "uses a block for unset values" do
+ Kitchen::LazyHash.new(hash_obj, context).
+ fetch(:nope) { |key| "#{key} is costly" }.must_equal "nope is costly"
+ end
+ end
+
+ describe "#to_hash" do
+
+ it "invokes any callable values and returns a Hash object" do
+ converted = Kitchen::LazyHash.new(hash_obj, context).to_hash
+
+ converted.must_be_instance_of Hash
+ converted.fetch(:shed_color).must_equal "blue"
+ converted.fetch(:barn).must_equal "locked"
+ converted.fetch(:genre).must_equal "heavy metal"
+ end
+ end
+
+ describe "select" do
+ it "calls Procs when appropriate" do
+ Kitchen::LazyHash.new(hash_obj, context).select { |_, _| true }.
+ must_equal :shed_color => "blue", :barn => "locked", :genre => "heavy metal"
+ end
+ end
+
+ describe "enumerable" do
+ it "is an Enumerable" do
+ assert Kitchen::LazyHash.new(hash_obj, context).is_a? Enumerable
+ end
+
+ it "returns an Enumerator from each() if no block given" do
+ e = Kitchen::LazyHash.new(hash_obj, context).each
+ e.is_a? Enumerator
+ e.next.must_equal [:shed_color, "blue"]
+ e.next.must_equal [:barn, "locked"]
+ e.next.must_equal [:genre, "heavy metal"]
+ end
+
+ it "yields each item to the block if a block is given to each()" do
+ items = []
+ Kitchen::LazyHash.new(hash_obj, context).each { |i| items << i }
+ items.must_equal [[:shed_color, "blue"], [:barn, "locked"], [:genre, "heavy metal"]]
+ end
+ end
+end