3 * Copyright 2002 Free Software Foundation, Inc.
5 * This file is part of GNU Radio
7 * GNU Radio 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 3, or (at your option)
12 * GNU Radio 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.
17 * You should have received a copy of the GNU General Public License
18 * along with GNU Radio; see the file COPYING. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street,
20 * Boston, MA 02110-1301, USA.
23 #include <cppunit/TestAssert.h>
24 #include <qa_convolutional_interleaver.h>
27 qa_convolutional_interleaver::t0 ()
29 static int input[16] = {
36 static int output[16] = {
44 intl = new convolutional_interleaver<int>(true, 4, 1);
46 for (int i = 0; i < 16; i++)
47 CPPUNIT_ASSERT_EQUAL (output[i], intl->transform (input[i]));
51 qa_convolutional_interleaver::t1 ()
53 static int input[16] = {
60 static int output[16] = {
68 intl = new convolutional_interleaver<int>(false, 4, 1);
70 for (int i = 0; i < 16; i++)
71 CPPUNIT_ASSERT_EQUAL (output[i], intl->transform (input[i]));
75 qa_convolutional_interleaver::t2 ()
77 intl = new convolutional_interleaver<int>(true, 4, 1);
78 deintl = new convolutional_interleaver<int>(false, 4, 1);
83 int end_to_end_delay = intl->end_to_end_delay ();
84 for (int i = 0; i < end_to_end_delay; i++){
85 CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
88 for (int i = 0; i < 3 * end_to_end_delay; i++){
89 CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));
94 qa_convolutional_interleaver::t3 ()
96 intl = new convolutional_interleaver<int>(true, 4, 2);
97 deintl = new convolutional_interleaver<int>(false, 4, 2);
102 int end_to_end_delay = intl->end_to_end_delay ();
103 for (int i = 0; i < end_to_end_delay; i++){
104 CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
107 for (int i = 0; i < 3 * end_to_end_delay; i++){
108 CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));
113 qa_convolutional_interleaver::t4 ()
115 intl = new convolutional_interleaver<int>(true, 52, 4);
116 deintl = new convolutional_interleaver<int>(false, 52, 4);
121 int end_to_end_delay = intl->end_to_end_delay ();
122 CPPUNIT_ASSERT_EQUAL (10608, end_to_end_delay);
124 for (int i = 0; i < end_to_end_delay; i++){
125 CPPUNIT_ASSERT_EQUAL (0, deintl->transform (intl->transform (icount++)));
128 for (int i = 0; i < 3 * end_to_end_delay; i++){
129 CPPUNIT_ASSERT_EQUAL (dcount++, deintl->transform (intl->transform (icount++)));