hnbgw: Introduce tests about UE registration

We didn't have any test coverage for HNBAP UE registration so far.

Let's start with two basic tests:
* normal / successful case
* abnormal case: UE Register without prior HNB Register

Change-Id: Ice2743d376ab8041646259fa25117d6fd0e8c2fd
diff --git a/library/hnbap/HNBAP_Templates.ttcn b/library/hnbap/HNBAP_Templates.ttcn
index 2576d17..7a86e0c 100644
--- a/library/hnbap/HNBAP_Templates.ttcn
+++ b/library/hnbap/HNBAP_Templates.ttcn
@@ -232,6 +232,172 @@
 	}
 }
 
+/* 9.1.6 UE REGISTER REQUEST */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterRequest(template (present) UE_Identity ue_id) := {
+	initiatingMessage := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterRequest := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Registration_Cause,
+						criticality := ignore,
+						value_ := { Registration_Cause := normal }
+					}, {
+						id := HNBAP_Constants.id_UE_Capabilities,
+						criticality := ignore,
+						value_ := {
+							UE_Capabilities := {
+								access_stratum_release_indicator := ?,
+								csg_capability := ?
+							}
+						}
+					}
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterRequest(template (value) UE_Identity ue_id) := {
+	initiatingMessage := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterRequest := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Registration_Cause,
+						criticality := ignore,
+						value_ := { Registration_Cause := normal }
+					}, {
+						id := HNBAP_Constants.id_UE_Capabilities,
+						criticality := ignore,
+						value_ := {
+							UE_Capabilities := {
+								access_stratum_release_indicator := rel_8_and_beyond,
+								csg_capability := not_csg_capable,
+								iE_Extensions := omit
+							}
+						}
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+/* 9.1.7 UE REGISTER ACCEPT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterAccept(template (present) UE_Identity ue_id) := {
+	successfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterAccept := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Context_ID,
+						criticality := reject,
+						value_ := { Context_ID := ? }
+					}, *
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterAccept(template (value) UE_Identity ue_id,
+			  template (value) BIT24 context_id) := {
+	successfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterAccept := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Context_ID,
+						criticality := reject,
+						value_ := { Context_ID := context_id }
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
+/* 9.1.8 UE REGISTER REJECT */
+template (present) HNBAP_PDU
+tr_HNBAP_UERegisterReject(template (present) UE_Identity ue_id, template (present) Cause cause := ?) := {
+	unsuccessfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterReject := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Cause,
+						criticality := ignore,
+						value_ := { Cause := cause }
+					}, *
+				},
+				protocolExtensions := * /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+template (value) HNBAP_PDU
+ts_HNBAP_UERegisterReject(template (value) UE_Identity ue_id, template (value) Cause cause) := {
+	unsuccessfulOutcome := {
+		procedureCode := id_UERegister,
+		criticality := reject,
+		value_ := {
+			uERegisterReject := {
+				protocolIEs := {
+					{
+						id := HNBAP_Constants.id_UE_Identity,
+						criticality := reject,
+						value_ := { UE_Identity := ue_id }
+					}, {
+						id := HNBAP_Constants.id_Cause,
+						criticality := ignore,
+						value_ := { Cause := cause }
+					}
+				},
+				protocolExtensions := omit /* TODO: CriticalityDiagnostics, BackoffTimer */
+			}
+		}
+	}
+}
+
 /* 9.1.9 HNB DE-REGISTER */
 template (value) HNBAP_PDU
 ts_HNBAP_HNBDe_Register(template (value) Cause cause) := {