Sponsored-by: On-Waves ehf
---
 tests/msgb/msgb_test.c  | 53 +++++++++++++++++++++++++++++++++++++++++++++++--
 tests/msgb/msgb_test.ok |  2 ++
 2 files changed, 53 insertions(+), 2 deletions(-)

diff --git a/tests/msgb/msgb_test.c b/tests/msgb/msgb_test.c
index 412e8bb..08d9857 100644
--- a/tests/msgb/msgb_test.c
+++ b/tests/msgb/msgb_test.c
@@ -87,6 +87,7 @@ static void test_msgb_api()
        msg->l3h = msg->head - 1;
        printf("Buffer: %s\n", msgb_hexdump(msg));

+
 #if 0
 extern void msgb_reset(struct msgb *m);
 #define msgb_l1(m)     ((void *)(MSGB_CHECK2(m)->l1h))
@@ -97,15 +98,61 @@ static inline unsigned int msgb_l1len(const struct msgb 
*msgb)
        static inline unsigned char *msgb_get(struct msgb *msgb, unsigned int 
len)
        static inline unsigned char *msgb_push(struct msgb *msgb, unsigned int 
len)
        static inline unsigned char *msgb_pull(struct msgb *msgb, unsigned int 
len)
-       
+
        static inline unsigned char *msgb_pull_to_l3(struct msgb *msg)
        static inline int msgb_trim(struct msgb *msg, int len)
        static inline int msgb_l3trim(struct msgb *msg, int l3len)
        uint8_t *msgb_data(const struct msgb *msg);
-       return;
+return;
 #endif
 }

+static void test_msgb_copy()
+{
+       struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+       struct msgb *msg2;
+
+       printf("Testing msgb_copy\n");
+
+       msg->l1h = msgb_put(msg, 20);
+       msg->l2h = msgb_put(msg, 20);
+       msg->l3h = msgb_put(msg, 20);
+       msg->l4h = msgb_put(msg, 20);
+
+       msg2 = msgb_copy(msg, "copy");
+
+       OSMO_ASSERT(msgb_length(msg) == msgb_length(msg2));
+       OSMO_ASSERT(msgb_l1len(msg) == msgb_l1len(msg2));
+       OSMO_ASSERT(msgb_l2len(msg) == msgb_l2len(msg2));
+       OSMO_ASSERT(msgb_l3len(msg) == msgb_l3len(msg2));
+       OSMO_ASSERT(msg->tail - msg->l4h == msg2->tail - msg2->l4h);
+}
+
+static void test_msgb_resize_area()
+{
+       struct msgb *msg = msgb_alloc_headroom(4096, 128, "data");
+       int rc;
+
+       printf("Testing msgb_resize_area\n");
+
+       msg->l1h = msgb_put(msg, 20);
+       msg->l2h = msgb_put(msg, 20);
+       msg->l3h = msgb_put(msg, 20);
+       msg->l4h = msgb_put(msg, 20);
+
+       rc = msgb_resize_area(msg, msg->l2h, 20, 20 + 30);
+
+       OSMO_ASSERT(rc >= 0);
+       OSMO_ASSERT(msgb_length(msg) == 80 + 30);
+       OSMO_ASSERT(msgb_l1len(msg) == 80 + 30);
+       OSMO_ASSERT(msgb_l2len(msg) == 60 + 30);
+       OSMO_ASSERT(msgb_l3len(msg) == 40);
+       OSMO_ASSERT(msg->tail - msg->l4h == 20);
+
+       rc = msgb_resize_area(msg, msg->l2h, 50, 8000);
+       OSMO_ASSERT(rc == -1);
+}
+
 static struct log_info info = {};

 int main(int argc, char **argv)
@@ -113,6 +160,8 @@ int main(int argc, char **argv)
        osmo_init_logging(&info);

        test_msgb_api();
+       test_msgb_copy();
+       test_msgb_resize_area();

        printf("Success.\n");

diff --git a/tests/msgb/msgb_test.ok b/tests/msgb/msgb_test.ok
index f8de0cd..3ace5be 100644
--- a/tests/msgb/msgb_test.ok
+++ b/tests/msgb/msgb_test.ok
@@ -18,4 +18,6 @@ Test msgb_hexdump
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 [L3]> 
(L4=tail+4) 
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> (L3+8) 00 00 00 00 
(L4=tail+4) 
 Buffer: (L1=data-124) 00 00 00 00 00 00 00 00 [L2]> 00 00 00 00 (L3 out of 
range) (L4=tail+4) 
+Testing msgb_copy
+Testing msgb_resize_area
 Success.
-- 
1.9.1

Reply via email to