# encoding: UTF-8 # frozen_string_literal: true require_relative "helper" class HashTweaksTest < Test::Unit::TestCase test "Hash#camelize" do assert_equal({ fooBarBaz: "qux" }, { foo_bar_baz: "qux" }.camelize(:lower)) assert_equal({ FooBarBaz: "qux" }, { foo_bar_baz: "qux" }.camelize(:upper)) assert_equal({ FOO_BAZ_BAZ: "qux" }, { FOO_BAZ_BAZ: "qux" }.camelize(:upper)) end test "Hash#camelize!" do hash = { foo_bar_baz: "qux" } hash.camelize! assert_equal [:FooBarBaz], hash.keys end test "Hash#deep_with_indifferent_access" do hash_1 = { a: { "b" => { c: "d" } } } hash_2 = hash_1.deep_with_indifferent_access assert_equal JSON.generate(hash_1[:a]), JSON.generate(hash_2["a"]) assert_equal JSON.generate(hash_1[:a]), JSON.generate(hash_2[:a]) assert_equal JSON.generate(hash_1[:a]["b"]), JSON.generate(hash_2["a"]["b"]) assert_equal JSON.generate(hash_1[:a]["b"]), JSON.generate(hash_2["a"][:b]) assert_equal JSON.generate(hash_1[:a]["b"][:c]), JSON.generate(hash_2["a"][:b][:c]) assert_equal JSON.generate(hash_1[:a]["b"][:c]), JSON.generate(hash_2["a"][:b]["c"]) end test "Array#deep_with_indifferent_access" do array = [:foo, "baz", { a: { "b" => :c } }].deep_with_indifferent_access assert_equal :foo, array[0] assert_equal "baz", array[1] assert_equal JSON.generate(a: { b: :c }), JSON.generate(array[2]) assert_equal JSON.generate(b: :c), JSON.generate(array[2][:a]) assert_equal JSON.generate(b: :c), JSON.generate(array[2]["a"]) assert_equal :c, array[2][:a]["b"] assert_equal :c, array[2]["a"][:b] end test "Array#deep_symbolize_keys" do assert_equal([{ foo: "bar" }, "baz", :baz], [{ "foo" => "bar" }, "baz", :baz].deep_symbolize_keys) end test "Array#deep_stringify_keys" do assert_equal([{ "foo" => :bar }, "baz", :baz], [{ foo: :bar }, "baz", :baz].deep_stringify_keys) end end