module RANAP_Selftests {

import from RANAP_CommonDataTypes all;
import from RANAP_Constants all;
import from RANAP_Containers all;
import from RANAP_IEs all;
import from RANAP_PDU_Contents all;
import from RANAP_PDU_Descriptions all;
import from RANAP_Types all;

type component test_CT {
};

const octetstring c_InitUE_CM_SRV_REQ := '001340400000060003400100000f40060046f3120064003a40080046f312006400000010400e0d052471034f188005f407000008004f40030000000056400546f312000f'O;
const octetstring c_CommonId :=	'000f4010000001001740095046239134707780f3'O;
const octetstring c_DT_CM_SRV_ACK := '0014400f000002003b40010000104003020521'O;
const octetstring c_DT_MO_SETUP := '00144019000001001040121103450404600200815e0381654215021101'O;
const octetstring c_DT_MT_CALL_PROC := '00144010000002003b4001000010400403830280'O;
const octetstring c_RAB_AssReq := '0000404700000100360040000001003500363802d0012fa7202fa80000f44c080a028000514000272028140067400000222814003c40000000503d0800101faf026ed64047d40000400100'O;
const octetstring c_RAB_AssResp := '6000001a000001003440130000010033400c60087c0a80242240e2040000'O;
const octetstring c_IuRelReq := '000b4009000001000440020340'O;
const octetstring c_ResetResource := '001b001c00000300030001000004400142004d400b000001004e000400000000'O;
const octetstring c_IuRelCmd := '00014009000001000400020340'O;

type record EnDecTestcase {
	charstring name,
	octetstring encoded
};

type record of EnDecTestcase EnDecTestcases;

const EnDecTestcases test_data := {
	{
		name := "InitialUE_CM_SRV_REQ",
		encoded := c_InitUE_CM_SRV_REQ
	}, {
		name := "CommonID",
		encoded := c_CommonId
	}, {
		name := "DirectTransfer CM SERVICE ACK",
		encoded := c_DT_CM_SRV_ACK
	}, {
		name := "DirectTransfer MO CC SETUP",
		encoded := c_DT_MO_SETUP
	}, {
		name := "DirectTransfer MT CC CALL PROCEEDING",
		encoded := c_DT_MT_CALL_PROC
	}, {
		name := "RAB Assignment Request",
		encoded := c_RAB_AssReq
	}, {
		name := "RAB Assignment Response",
		encoded := c_RAB_AssResp
	}, {
		name := "Iu Release Request",
		encoded := c_IuRelReq
	}, {
		name := "Reset Resource",
		encoded := c_ResetResource
	}, {
		name := "Iu Release Command",
		encoded := c_IuRelCmd
	}
};

testcase TC_foo() runs on test_CT {
	var integer i;
	for (i := 0; i < lengthof(test_data); i := i+1) {
		var EnDecTestcase tc := test_data[i];
		var RANAP_PDU pdu := dec_RANAP_PDU(tc.encoded);
		log(tc.name, " decoded: ", pdu);
	}
	setverdict(pass);
}

}
