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