defmodule Ibex.MessageTest do use ExUnit.Case doctest Ibex require Ibex.Message test "adds nul to field" do result = Ibex.Message.make_field(<<71>>) assert(result == <<71, 0>>) end test "prefixes length to message" do msg_code = <<71>> version = <<2>> uhh = <<2>> last = <<0>> msg_code = Ibex.Message.make_field(msg_code) assert(msg_code == <<71, 0>>) version = Ibex.Message.make_field(version) assert(version == <<2, 0>>) uhh = Ibex.Message.make_field(uhh) assert(uhh == <<2, 0>>) last = Ibex.Message.make_field(last) assert(last == <<0, 0>>) msg = <<msg_code::binary, version::binary, uhh::binary, last::binary>> l = Ibex.Message.get_msg_length(msg) made_msg = Ibex.Message.make_msg(msg, l) assert(made_msg == <<0, 0, 0, 9, 71, 0, 2, 0, 2, 0, 0, 0, 0>>) end test "convert to IB API format" do test_msg = Ibex.Messages.Outbound.ReqIds.t() converted = IBMessage.to_ib_api(test_msg) assert(converted = <<0, 0, 0, 4, 8, 0, 50, 0, 0>>) end test "request contract details" do test_msg = Ibex.Messages.Outbound.ReqContractDetails.t("1001", "AAPL", "STK") converted = IBMessage.to_ib_api(test_msg) assert( converted == <<0, 0, 0, 19, 49, 48, 48, 49, 0, 56, 0, 57, 0, 65, 65, 80, 76, 0, 83, 84, 75, 0, 0>> ) end end