pcu: Introduce several tests TC_nacc_outbound_pkt_cell_chg_notif_dup*

These tests verify retransmission of duplicated Pkt Cell Change
Notification messages are ignored once the NACC procedure is already
ongoig.

Related: SYS#4909
Change-Id: Ib83eacfab7a73a2a51ab08801ff1c00c0058057c
diff --git a/pcu/GPRS_Components.ttcn b/pcu/GPRS_Components.ttcn
index e59c18d..34406b9 100644
--- a/pcu/GPRS_Components.ttcn
+++ b/pcu/GPRS_Components.ttcn
@@ -822,7 +822,8 @@
 altstep as_ms_rx_pkt_neighbor_cell_data(inout GprsMS ms, octetstring exp_si,
 					inout uint5_t exp_container_idx /* := 0 */,
 					inout integer si_offset /* := 0 */,
-					template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum)
+					template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum,
+					boolean single_step := false)
 runs on MS_BTS_IFACE_CT {
 	var integer len;
 	var octetstring exp_si_chunk;
@@ -874,7 +875,7 @@
 
 		exp_container_idx := exp_container_idx + 1;
 
-		if (do_repeat) {
+		if (not single_step and do_repeat) {
 			BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
 						  sapi := PCU_IF_SAPI_PDTCH, fn := 0,
 						  arfcn := f_trxnr2arfcn(valueof(nr.trx_nr)),
@@ -885,12 +886,13 @@
 }
 
 /* Handle groups of PKT NEIGHBOUR CELL DATA packets */
-function f_ms_handle_pkt_neighbor_cell_data(inout GprsMS ms, octetstring exp_si)
+function f_ms_handle_pkt_neighbor_cell_data(inout GprsMS ms, octetstring exp_si,
+					    template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum,
+					    uint5_t exp_container_idx := 0,
+					    integer si_offset := 0,
+					    boolean single_step := false)
 runs on MS_BTS_IFACE_CT {
-	var uint5_t exp_container_idx := 0;
-	var integer si_offset := 0;
 	var BTS_PDTCH_Block data_msg;
-	template (value) TsTrxBtsNum nr := ts_TsTrxBtsNum;
 
 	BTS.send(ts_PCUIF_RTS_REQ(nr.bts_nr, nr.trx_nr, nr.ts_nr,
 				  sapi := PCU_IF_SAPI_PDTCH, fn := 0,
@@ -899,7 +901,7 @@
 	alt {
 	[exp_container_idx == 0] as_ms_rx_ignore_dummy(ms, nr);
 	[exp_container_idx > 0]	 as_ms_rx_fail_dummy(ms, nr);
-	[]	as_ms_rx_pkt_neighbor_cell_data(ms, exp_si, exp_container_idx, si_offset, nr);
+	[]	as_ms_rx_pkt_neighbor_cell_data(ms, exp_si, exp_container_idx, si_offset, nr, single_step);
 	[] 	BTS.receive(tr_PCUIF_DATA_PDTCH(nr.bts_nr, tr_PCUIF_DATA(nr.trx_nr, nr.ts_nr, sapi := PCU_IF_SAPI_PDTCH),
 					   tr_RLCMAC_DL_CTRL(?, ?)
 			)) -> value data_msg {