summaryrefslogtreecommitdiffstats
path: root/tests/gsm0808
diff options
context:
space:
mode:
Diffstat (limited to 'tests/gsm0808')
-rw-r--r--tests/gsm0808/gsm0808_test.c36
-rw-r--r--tests/gsm0808/gsm0808_test.ok2
2 files changed, 31 insertions, 7 deletions
diff --git a/tests/gsm0808/gsm0808_test.c b/tests/gsm0808/gsm0808_test.c
index 197ec06d..63b87200 100644
--- a/tests/gsm0808/gsm0808_test.c
+++ b/tests/gsm0808/gsm0808_test.c
@@ -30,6 +30,13 @@
#include <arpa/inet.h>
#include <errno.h>
+#define EXPECT_ENCODED(hexstr) do { \
+ const char *enc_str = msgb_hexdump(msg); \
+ printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \
+ OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \
+ OSMO_ASSERT(rc_enc == msg->len); \
+ } while(0)
+
#define VERIFY(msg, data, len) \
if (msgb_l3len(msg) != len) { \
printf("%s:%d Length don't match: %d vs. %d. %s\n", \
@@ -65,6 +72,27 @@ static void setup_codec_list(struct gsm0808_speech_codec_list *scl)
scl->len = 3;
}
+void test_gsm0808_enc_cause(void)
+{
+ /* NOTE: This must be tested early because many of the following tests
+ * rely on the generation of a proper cause code. */
+
+ uint8_t rc_enc;
+ struct msgb *msg;
+
+ /* Test with a single byte cause code */
+ msg = msgb_alloc(1024, "output buffer");
+ rc_enc = gsm0808_enc_cause(msg, 0x41);
+ EXPECT_ENCODED("04 01 41");
+ msgb_free(msg);
+
+ /* Test with an extended (two byte) cause code */
+ msg = msgb_alloc(1024, "output buffer");
+ rc_enc = gsm0808_enc_cause(msg, 0x8041);
+ EXPECT_ENCODED("04 02 80 41");
+ msgb_free(msg);
+}
+
static void test_create_layer3(void)
{
static const uint8_t res[] = {
@@ -824,13 +852,6 @@ static void test_gsm0808_enc_dec_encrypt_info()
msgb_free(msg);
}
-#define EXPECT_ENCODED(hexstr) do { \
- const char *enc_str = msgb_hexdump(msg); \
- printf("%s: encoded: %s(rc = %u)\n", __func__, enc_str, rc_enc); \
- OSMO_ASSERT(strcmp(enc_str, hexstr " ") == 0); \
- OSMO_ASSERT(rc_enc == msg->len); \
- } while(0)
-
static void test_gsm0808_enc_dec_cell_id_list_lac()
{
struct gsm0808_cell_id_list2 enc_cil;
@@ -1770,6 +1791,7 @@ void test_gsm48_mr_cfg_from_gsm0808_sc_cfg()
int main(int argc, char **argv)
{
printf("Testing generation of GSM0808 messages\n");
+ test_gsm0808_enc_cause();
test_create_layer3();
test_create_layer3_aoip();
test_create_reset();
diff --git a/tests/gsm0808/gsm0808_test.ok b/tests/gsm0808/gsm0808_test.ok
index a48cf1d5..e5833d01 100644
--- a/tests/gsm0808/gsm0808_test.ok
+++ b/tests/gsm0808/gsm0808_test.ok
@@ -1,4 +1,6 @@
Testing generation of GSM0808 messages
+test_gsm0808_enc_cause: encoded: 04 01 41 (rc = 3)
+test_gsm0808_enc_cause: encoded: 04 02 80 41 (rc = 4)
Testing creating Layer3
Testing creating Layer3 (AoIP)
Testing creating Reset