xref: /libbtbb/tests/test_fec23.c (revision e25b118a40ed6b5c2ea76bae29e388cfbc2f6e92)
1 /* -*- c -*- */
2 /*
3  * Copyright 2007 - 2011 Dominic Spill, Michael Ossmann
4  *
5  * This file is part of libbtbb
6  *
7  * This program is free software; you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation; either version 2, or (at your option)
10  * any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with libbtbb; see the file COPYING.  If not, write to
19  * the Free Software Foundation, Inc., 51 Franklin Street,
20  * Boston, MA 02110-1301, USA.
21  */
22 
23 #ifdef HAVE_CONFIG_H
24 #include "config.h"
25 #endif
26 
27 #include "../bluetooth_packet.h"
28 #include <stdio.h>
29 
30 int test_unfec23() {
31     char *optr;
32     int i, j, ret, err;
33     ret = 0;
34 
35     printf("Testing unfec23\n");
36     printf("---------------\n");
37 
38     char input[20][15] = {
39         /* No errors */
40         {1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0},
41         {0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1},
42         {0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
43         {0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0},
44         {0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1},
45         {0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1},
46         {0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1, 0},
47         {0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 1},
48         {0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1},
49         {0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1},
50         /* Errors */
51         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0},
52         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1},
53         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0},
54         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0},
55         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1},
56         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1},
57         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0},
58         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1},
59         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1},
60         {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1}
61     };
62 
63     char output[20][15] = {
64         /* No errors */
65         {1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
66         {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
67         {0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
68         {0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
69         {0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
70         {0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
71         {0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
72         {0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
73         {0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
74         {0, 0, 0, 0, 0, 0, 0, 0, 0, 1},
75         /* Errors */
76         {1, 0, 0, 0, 0, 0, 0, 0, 0, 0},
77         {0, 1, 0, 0, 0, 0, 0, 0, 0, 0},
78         {0, 0, 1, 0, 0, 0, 0, 0, 0, 0},
79         {0, 0, 0, 1, 0, 0, 0, 0, 0, 0},
80         {0, 0, 0, 0, 1, 0, 0, 0, 0, 0},
81         {0, 0, 0, 0, 0, 1, 0, 0, 0, 0},
82         {0, 0, 0, 0, 0, 0, 1, 0, 0, 0},
83         {0, 0, 0, 0, 0, 0, 0, 1, 0, 0},
84         {0, 0, 0, 0, 0, 0, 0, 0, 1, 0},
85         {0, 0, 0, 0, 0, 0, 0, 0, 0, 1}
86     };
87 
88     for(i = 0; i < 20; i++) {
89         if (optr = unfec23(input[i], 1)) {
90             err = 0;
91             for(j = 0; j < 10; j++) {
92                 if (optr[j] != output[i][j]) {
93                     err = 1;
94                     break;
95                 }
96             }
97             if (err == 1) {
98                 printf("E");
99                 ret++;
100             }
101             else
102                 printf(".");
103         } else {
104             printf("F");
105             ret++;
106         }
107     }
108 
109 	if (ret > 0)
110 		printf("%d errors\n", ret);
111     printf("\n--------------------\n");
112     printf("Done testing unfec23\n");
113     return ret;
114 }
115 
116 int main(int argc, char** argv) {
117     int ret = 0;
118 
119     ret += test_unfec23();
120 
121     exit(ret);
122 }
123