blob: b82e909f66480ead0d31ee95e33d355bfa9916e9 [file] [log] [blame]
Harald Welte77847ad2015-10-06 22:07:04 +02001/* some humble start of unit testing */
2
3/* (C) 2015 by Harald Welte <laforge@gnumonks.org>
4 * All Rights Reserved
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU Affero General Public License as published by
8 * the Free Software Foundation; either version 3 of the License, or
9 * (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU Affero General Public License for more details.
15 *
16 * You should have received a copy of the GNU Affero General Public License
17 * along with this program. If not, see <http://www.gnu.org/licenses/>.
18 *
19 */
20
21
Harald Welte35cbc112015-09-11 17:36:59 +020022#include "iu_helpers.h"
23#include "asn1helpers.h"
24
25#include <assert.h>
26#define ASSERT(x) assert(x)
27
28#include <osmocom/core/utils.h>
29
30void *talloc_asn1_ctx;
31
32/* use odd number of digits */
33const uint8_t imsi_encoded[] = { 0x10, 0x32, 0x54, 0x76, 0xF8 };
34const char imsi_decoded[] = "012345678";
35
Daniel Willmann54a9a142015-11-23 14:01:25 +010036void test_iu_helpers(void)
Harald Welte35cbc112015-09-11 17:36:59 +020037{
38 char outstr[32];
39 uint8_t outbuf[16];
40 int rc;
41
Daniel Willmann54a9a142015-11-23 14:01:25 +010042 printf("Testing Iu helper functions\n");
43
Harald Welte35cbc112015-09-11 17:36:59 +020044 printf("pre-encoded: %s\n", osmo_hexdump_nospc(imsi_encoded,
45 sizeof(imsi_encoded)));
46 rc = decode_iu_bcd(outstr, sizeof(outstr), imsi_encoded,
47 sizeof(imsi_encoded));
48 ASSERT(rc >= 0);
49 printf("decoded: %s\n", outstr);
50 ASSERT(!strcmp(outstr, imsi_decoded));
51
52 rc = encode_iu_imsi(outbuf, sizeof(outbuf), imsi_decoded);
53 ASSERT(rc >= 0);
54 printf("re-encoded: %s\n", osmo_hexdump_nospc(outbuf, rc));
55 ASSERT(!memcmp(outbuf, imsi_encoded, sizeof(imsi_encoded)));
Daniel Willmann54a9a142015-11-23 14:01:25 +010056}
57
58uint32_t val1 = 0xdeadbeef;
59
60void test_asn1_helpers(void)
61{
62 BIT_STRING_t enc;
63 uint32_t res;
64
65 printf("Testing asn.1 helper functions\n");
66
67 printf("Encoding 0x%x to asn.1 bitstring\n", val1);
68 asn1_u32_to_bitstring(&enc, &val1);
69
70 ASSERT(enc.buf == (uint8_t *) &val1);
71 ASSERT(enc.size == sizeof(uint32_t));
72 ASSERT(enc.bits_unused == 0);
73
74 res = asn1bitstr_to_u32(&enc);
75
76 printf("Decoding back to uint32_t: 0x%x\n", res);
77 ASSERT(res == val1);
78
79}
80
81int main(int argc, char **argv)
82{
83 test_iu_helpers();
84 test_asn1_helpers();
Harald Welte35cbc112015-09-11 17:36:59 +020085
86 return 0;
87}