-module(s1ap_utils_test). -include_lib("eunit/include/eunit.hrl"). -include("S1AP-Constants.hrl"). -include("S1AP-IEs.hrl"). -define(_assertEqualIE(IEI, Values), ?_assertEqual(Values, proplists:get_value(IEI, IEs))). -define(_assertMatchIE(IEI, Values), ?_assertMatch(Values, proplists:get_value(IEI, IEs))). %% ------------------------------------------------------------------ %% actual testcases %% ------------------------------------------------------------------ s1ap_setup_req_parse_test_() -> {MsgType, IEs} = s1ap_utils:parse_pdu(s1ap_samples:s1_setup_req_pdu()), [?_assertEqual({?'id-S1Setup', initiatingMessage}, MsgType), ?_assertEqualIE(?'id-Global-ENB-ID', #{enb_id => 0, plmn_id => {"001", "01"}}), ?_assertEqualIE(?'id-eNBname', undefined), %% optional, not present ?_assertMatchIE(?'id-SupportedTAs', [12345])]. %% we only parse the TACs s1ap_setup_rsp_parse_test_() -> {MsgType, IEs} = s1ap_utils:parse_pdu(s1ap_samples:s1_setup_rsp_pdu()), [?_assertEqual({?'id-S1Setup', successfulOutcome}, MsgType), ?_assertEqualIE(?'id-MMEname', "open5gs-mme0"), ?_assertMatchIE(?'id-ServedGUMMEIs', [#'ServedGUMMEIsItem'{}]), ?_assertEqualIE(?'id-RelativeMMECapacity', 16#ff)]. s1ap_setup_fail_parse_test_() -> {MsgType, IEs} = s1ap_utils:parse_pdu(s1ap_samples:s1_setup_fail_pdu()), [?_assertEqual({?'id-S1Setup', unsuccessfulOutcome}, MsgType), ?_assertEqualIE(?'id-Cause', {misc, unspecified}), ?_assertEqualIE(?'id-TimeToWait', v10s)]. s1ap_setup_fail_build_test_() -> [?_assertEqual({ok, s1ap_samples:s1_setup_fail_pdu()}, s1ap_utils:build_s1setup_fail_pdu([]))]. build_pdu_error_test_() -> TraceStartReq = {{?'id-TraceStart', initiatingMessage}, []}, S1SetupFailure = {{?'id-S1Setup', unsuccessfulOutcome}, [{?'id-TimeToWait', 42}]}, %% wrong value [%% test building a non-implemented PDU ?_assertEqual({error, {build_pdu, not_implemented}}, s1ap_utils:build_pdu(TraceStartReq)), %% test building a PDU with a wrong user-supplied IE ?_assertMatch({error, {encode_pdu, {asn1, _}}}, s1ap_utils:build_pdu(S1SetupFailure))]. %% vim:set ts=4 sw=4 et: