# frozen_string_literal: true describe "ESMs_util_hashmap_fromArray", :requires_connection, v2: true do include_context "connection" context "when the array is not a valid hash map" do it "returns nil" do response = execute_sqf!( <<~SQF private _result = [ ["key_1", "key_2", "key_3"], [ "value_1", true, [ ["key_4", "key_5"], [ false, [ ["key_6", "key_7"], [6, nil] ] ] ] ] ] call ESMs_util_hashmap_fromArray; if (isNil "_result") exitWith {}; if !(_result isEqualType createHashMap) exitWith {}; _result SQF ) expect(response).to be_nil end end context "when the array is a valid hash map" do it "returns a hash map " do response = execute_sqf!( <<~SQF private _result = [ ["key_1", "value_1"], ["key_2", true], [ "key_3", [ ["key_4", false], [ "key_5", [ ["key_6", 6], ["key_7", nil] ] ] ] ] ] call ESMs_util_hashmap_fromArray; if (isNil "_result") exitWith {}; if !(_result isEqualType createHashMap) exitWith {}; _result SQF ) expect(response).to eq('[["key_1","value_1"],["key_2",true],["key_3",[["key_4",false],["key_5",[["key_6",6],["key_7",any]]]]]]') end end context "when there are nil values" do it "returns a hash map" do response = execute_sqf!( <<~SQF [ ["key_1", nil], ["key_2", 2], ["key_3", nil], ["key_4", 4] ] call ESMs_util_hashmap_fromArray SQF ) expect(response).to eq("[[\"key_1\",any],[\"key_2\",2],[\"key_3\",any],[\"key_4\",4]]") end end end