From fcec2c02ab66bba1f7a0cd39154c0250d62bebcc Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Fri, 1 Jun 2018 01:28:32 +0000 Subject: [PATCH] hashes --- koans/about_hashes.rb | 56 +++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/koans/about_hashes.rb b/koans/about_hashes.rb index 7287ba0..f39c79e 100644 --- a/koans/about_hashes.rb +++ b/koans/about_hashes.rb @@ -3,27 +3,27 @@ require File.expand_path(File.dirname(__FILE__) + '/neo') class AboutHashes < Neo::Koan def test_creating_hashes empty_hash = Hash.new - assert_equal __, empty_hash.class - assert_equal(__, empty_hash) - assert_equal __, empty_hash.size + assert_equal Hash, empty_hash.class + assert_equal({}, empty_hash) + assert_equal 0, empty_hash.size end def test_hash_literals hash = { :one => "uno", :two => "dos" } - assert_equal __, hash.size + assert_equal 2, hash.size end def test_accessing_hashes hash = { :one => "uno", :two => "dos" } - assert_equal __, hash[:one] - assert_equal __, hash[:two] - assert_equal __, hash[:doesnt_exist] + assert_equal "uno", hash[:one] + assert_equal "dos", hash[:two] + assert_equal nil, hash[:doesnt_exist] end def test_accessing_hashes_with_fetch hash = { :one => "uno" } - assert_equal __, hash.fetch(:one) - assert_raise(___) do + assert_equal "uno", hash.fetch(:one) + assert_raise(KeyError) do hash.fetch(:doesnt_exist) end @@ -36,58 +36,56 @@ class AboutHashes < Neo::Koan hash = { :one => "uno", :two => "dos" } hash[:one] = "eins" - expected = { :one => __, :two => "dos" } - assert_equal __, hash + expected = { :one => "eins", :two => "dos" } + assert_equal expected, hash - # Bonus Question: Why was "expected" broken out into a variable - # rather than used as a literal? end def test_hash_is_unordered hash1 = { :one => "uno", :two => "dos" } hash2 = { :two => "dos", :one => "uno" } - assert_equal __, hash1 == hash2 + assert_equal true, hash1 == hash2 end def test_hash_keys hash = { :one => "uno", :two => "dos" } - assert_equal __, hash.keys.size - assert_equal __, hash.keys.include?(:one) - assert_equal __, hash.keys.include?(:two) - assert_equal __, hash.keys.class + assert_equal 2, hash.keys.size + assert_equal true, hash.keys.include?(:one) + assert_equal true, hash.keys.include?(:two) + assert_equal Array, hash.keys.class end def test_hash_values hash = { :one => "uno", :two => "dos" } - assert_equal __, hash.values.size - assert_equal __, hash.values.include?("uno") - assert_equal __, hash.values.include?("dos") - assert_equal __, hash.values.class + assert_equal 2, hash.values.size + assert_equal true, hash.values.include?("uno") + assert_equal true, hash.values.include?("dos") + assert_equal Array, hash.values.class end def test_combining_hashes hash = { "jim" => 53, "amy" => 20, "dan" => 23 } new_hash = hash.merge({ "jim" => 54, "jenny" => 26 }) - assert_equal __, hash != new_hash + assert_equal true, hash != new_hash - expected = { "jim" => __, "amy" => 20, "dan" => 23, "jenny" => __ } - assert_equal __, expected == new_hash + expected = { "jim" => 54, "amy" => 20, "dan" => 23, "jenny" => 26 } + assert_equal true, expected == new_hash end def test_default_value hash1 = Hash.new hash1[:one] = 1 - assert_equal __, hash1[:one] - assert_equal __, hash1[:two] + assert_equal 1, hash1[:one] + assert_equal nil, hash1[:two] hash2 = Hash.new("dos") hash2[:one] = 1 - assert_equal __, hash2[:one] - assert_equal __, hash2[:two] + assert_equal 1, hash2[:one] + assert_equal "dos", hash2[:two] end def test_default_value_is_the_same_object