///////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2000-2019 Ericsson Telecom AB
// All rights reserved. This program and the accompanying materials
// are made available under the terms of the Eclipse Public License v2.0
// which accompanies this distribution, and is available at
// https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
///////////////////////////////////////////////////////////////////////////////
//
//  File:               PFCP_Test.ttcn
//  Description:        PFCP protocol module
//  Rev:                <RnXnn>
//  Prodnr:             CNL 113 875
//  Contact:            http://ttcn.ericsson.se
//  Reference:          3GPP TS 29.244 v15.1.0
//

module PFCP_Test {

import from PFCP_Test_Templates all;
import from PFCP_Types all;

type component MAIN_CT {}

testcase tc_PFCP_test () runs on MAIN_CT {
  var octetstring vl_pfcp_pdu_oct := '21320163000000000000000018400100003C000500
    0500030400010055003800020001001D0004000000FF000200260014000100001500020D0000
    5D0005026A0000020018000E6170706C69636174696F6E323535005F000100006C0004000000
    010051000400000001006D0004000000010001004A003800020002001D0004000000FF000200
    200014000101005D0005066A0000020018000E6170706C69636174696F6E323535006C000400
    0000020051000400000001006D0004000000010003001C006C000400000001002C0001020004
    000B002A000101001E000228FF0003002A006C000400000002002C00010200040019002A0001
    000054000A0100B10A0A0E0B000183001E000228FF0006002000510004000000010025000283
    00003E000102001F00090100000000004E20000007001B006D0004000000010019000100001A
    000A0000001000000000100000710001010039000D02000000007A42386005000304'O;

  var octetstring vl_pfcp_pdu_oct_encoded := enc_PDU_PFCP(valueof(t_PDU_PFCP));
  var PDU_PFCP vl_pfcp_pdu_decoded_v1 := dec_PDU_PFCP(vl_pfcp_pdu_oct);
  var PDU_PFCP vl_pfcp_pdu_decoded_v2 := dec_PDU_PFCP(vl_pfcp_pdu_oct_encoded);
  if (match(vl_pfcp_pdu_decoded_v1, valueof(t_PDU_PFCP)) and
      match(vl_pfcp_pdu_decoded_v1, vl_pfcp_pdu_decoded_v2))
  {
    log("Match OK for PDU_PFCP!");
    setverdict(pass);
  } else {
    log("Match failed for PDU_PFCP!");
    setverdict(fail);
  }
}

control {
  execute (tc_PFCP_test());
}

}  // end of module
