cbc: Introduce test TC_create_nack_mme

Related: OS#4945
Change-Id: I4589af1ddfac4c6e5bbd99e68ebc4b8dc2d5eb36
diff --git a/cbc/CBC_Tests.ttcn b/cbc/CBC_Tests.ttcn
index 8daa3bf..3394bed 100644
--- a/cbc/CBC_Tests.ttcn
+++ b/cbc/CBC_Tests.ttcn
@@ -160,6 +160,7 @@
 		sctp_is_client := sctp_is_client,
 		start_fn := refers(f_MME_ConnHdlr_start_fn_void),
 		exp_cbs_msg := omit,
+		write_replace_warning_req_cause := SBC_AP_Cause_message_accepted,
 		write_replace_warning_ind_cause := omit,
 		write_repl_unknown_TAIs := omit,
 		bcast_cell_id_list := omit
@@ -717,6 +718,23 @@
 	f_shutdown_helper();
 }
 
+/* Test MME answering Write-Replace Warning Request with Write-Replace Warning Response cause != accepted */
+private function f_mme_TC_create_nack_mme() runs on MME_ConnHdlr {
+	f_sbcap_handle_write_replace_warn_req(g_pars.exp_cbs_msg, 0);
+}
+testcase TC_create_nack_mme() runs on test_CT {
+	var template (value) CBS_Message msg := t_CBSmsg(48, 16752);
+
+	f_init(num_bsc := 0, num_mme := 1);
+
+	g_pars_MME[0].start_fn := refers(f_mme_TC_create_nack_mme);
+	g_pars_MME[0].exp_cbs_msg := valueof(msg);
+	g_pars_MME[0].write_replace_warning_req_cause := SBcAP_Cause_unspecifed_error;
+	f_start();
+	f_create_and_delete(valueof(msg));
+	f_shutdown_helper();
+}
+
 control {
 	execute( TC_rx_keepalive() );
 	execute( TC_rx_keepalive_timeout() );
@@ -736,6 +754,7 @@
 	execute( TC_ecbe_create_delete_etws_mme() );
 
 	execute( TC_create_nack_bsc() );
+	execute( TC_create_nack_mme() );
 }
 
 }
diff --git a/cbc/MME_ConnectionHandler.ttcn b/cbc/MME_ConnectionHandler.ttcn
index c49461a..4ab30c6 100644
--- a/cbc/MME_ConnectionHandler.ttcn
+++ b/cbc/MME_ConnectionHandler.ttcn
@@ -44,6 +44,7 @@
 	boolean sctp_is_client,
 	void_fn start_fn,
 	CBS_Message exp_cbs_msg optional,
+	SBC_AP_Cause write_replace_warning_req_cause,
 	SBC_AP_Cause write_replace_warning_ind_cause optional,
 	List_of_TAIs write_repl_unknown_TAIs optional,
 	CellId_Broadcast_List bcast_cell_id_list optional
@@ -69,11 +70,12 @@
 		tx := ts_SBCAP_WRITE_WARNING_RESP_UNKNOWN_TAI(
 						int2bit(msg.msg_id, 16),
 						int2bit(msg.ser_nr, 16),
-						SBC_AP_Cause_message_accepted,
+						g_pars.write_replace_warning_req_cause,
 						g_pars.write_repl_unknown_TAIs);
 	} else {
 		tx := ts_SBCAP_WRITE_WARNING_RESP(int2bit(msg.msg_id, 16),
-						  int2bit(msg.ser_nr, 16));
+						  int2bit(msg.ser_nr, 16),
+						  g_pars.write_replace_warning_req_cause);
 	}
 	f_SBC_AP_send(tx, idx);
 }