3
* Copyright 2006 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 <qa_pmt_unv.h>
24
#include <cppunit/TestAssert.h>
29
qa_pmt_unv::test_u8vector()
31
static const size_t N = 3;
32
pmt_t v1 = pmt_make_u8vector(N, 0);
33
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
34
uint8_t s0 = uint8_t(10);
35
uint8_t s1 = uint8_t(20);
36
uint8_t s2 = uint8_t(30);
38
pmt_u8vector_set(v1, 0, s0);
39
pmt_u8vector_set(v1, 1, s1);
40
pmt_u8vector_set(v1, 2, s2);
42
CPPUNIT_ASSERT_EQUAL(s0, pmt_u8vector_ref(v1, 0));
43
CPPUNIT_ASSERT_EQUAL(s1, pmt_u8vector_ref(v1, 1));
44
CPPUNIT_ASSERT_EQUAL(s2, pmt_u8vector_ref(v1, 2));
46
CPPUNIT_ASSERT_THROW(pmt_u8vector_ref(v1, N), pmt_out_of_range);
47
CPPUNIT_ASSERT_THROW(pmt_u8vector_set(v1, N, uint8_t(0)), pmt_out_of_range);
50
const uint8_t *rd = pmt_u8vector_elements(v1, len);
51
CPPUNIT_ASSERT_EQUAL(len, N);
52
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
53
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
54
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
56
uint8_t *wr = pmt_u8vector_writable_elements(v1, len);
57
CPPUNIT_ASSERT_EQUAL(len, N);
59
CPPUNIT_ASSERT_EQUAL(uint8_t(0), wr[0]);
60
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
61
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
64
qa_pmt_unv::test_s8vector()
66
static const size_t N = 3;
67
pmt_t v1 = pmt_make_s8vector(N, 0);
68
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
69
int8_t s0 = int8_t(10);
70
int8_t s1 = int8_t(20);
71
int8_t s2 = int8_t(30);
73
pmt_s8vector_set(v1, 0, s0);
74
pmt_s8vector_set(v1, 1, s1);
75
pmt_s8vector_set(v1, 2, s2);
77
CPPUNIT_ASSERT_EQUAL(s0, pmt_s8vector_ref(v1, 0));
78
CPPUNIT_ASSERT_EQUAL(s1, pmt_s8vector_ref(v1, 1));
79
CPPUNIT_ASSERT_EQUAL(s2, pmt_s8vector_ref(v1, 2));
81
CPPUNIT_ASSERT_THROW(pmt_s8vector_ref(v1, N), pmt_out_of_range);
82
CPPUNIT_ASSERT_THROW(pmt_s8vector_set(v1, N, int8_t(0)), pmt_out_of_range);
85
const int8_t *rd = pmt_s8vector_elements(v1, len);
86
CPPUNIT_ASSERT_EQUAL(len, N);
87
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
88
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
89
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
91
int8_t *wr = pmt_s8vector_writable_elements(v1, len);
92
CPPUNIT_ASSERT_EQUAL(len, N);
94
CPPUNIT_ASSERT_EQUAL(int8_t(0), wr[0]);
95
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
96
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
99
qa_pmt_unv::test_u16vector()
101
static const size_t N = 3;
102
pmt_t v1 = pmt_make_u16vector(N, 0);
103
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
104
uint16_t s0 = uint16_t(10);
105
uint16_t s1 = uint16_t(20);
106
uint16_t s2 = uint16_t(30);
108
pmt_u16vector_set(v1, 0, s0);
109
pmt_u16vector_set(v1, 1, s1);
110
pmt_u16vector_set(v1, 2, s2);
112
CPPUNIT_ASSERT_EQUAL(s0, pmt_u16vector_ref(v1, 0));
113
CPPUNIT_ASSERT_EQUAL(s1, pmt_u16vector_ref(v1, 1));
114
CPPUNIT_ASSERT_EQUAL(s2, pmt_u16vector_ref(v1, 2));
116
CPPUNIT_ASSERT_THROW(pmt_u16vector_ref(v1, N), pmt_out_of_range);
117
CPPUNIT_ASSERT_THROW(pmt_u16vector_set(v1, N, uint16_t(0)), pmt_out_of_range);
120
const uint16_t *rd = pmt_u16vector_elements(v1, len);
121
CPPUNIT_ASSERT_EQUAL(len, N);
122
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
123
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
124
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
126
uint16_t *wr = pmt_u16vector_writable_elements(v1, len);
127
CPPUNIT_ASSERT_EQUAL(len, N);
129
CPPUNIT_ASSERT_EQUAL(uint16_t(0), wr[0]);
130
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
131
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
134
qa_pmt_unv::test_s16vector()
136
static const size_t N = 3;
137
pmt_t v1 = pmt_make_s16vector(N, 0);
138
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
139
int16_t s0 = int16_t(10);
140
int16_t s1 = int16_t(20);
141
int16_t s2 = int16_t(30);
143
pmt_s16vector_set(v1, 0, s0);
144
pmt_s16vector_set(v1, 1, s1);
145
pmt_s16vector_set(v1, 2, s2);
147
CPPUNIT_ASSERT_EQUAL(s0, pmt_s16vector_ref(v1, 0));
148
CPPUNIT_ASSERT_EQUAL(s1, pmt_s16vector_ref(v1, 1));
149
CPPUNIT_ASSERT_EQUAL(s2, pmt_s16vector_ref(v1, 2));
151
CPPUNIT_ASSERT_THROW(pmt_s16vector_ref(v1, N), pmt_out_of_range);
152
CPPUNIT_ASSERT_THROW(pmt_s16vector_set(v1, N, int16_t(0)), pmt_out_of_range);
155
const int16_t *rd = pmt_s16vector_elements(v1, len);
156
CPPUNIT_ASSERT_EQUAL(len, N);
157
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
158
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
159
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
161
int16_t *wr = pmt_s16vector_writable_elements(v1, len);
162
CPPUNIT_ASSERT_EQUAL(len, N);
164
CPPUNIT_ASSERT_EQUAL(int16_t(0), wr[0]);
165
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
166
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
169
qa_pmt_unv::test_u32vector()
171
static const size_t N = 3;
172
pmt_t v1 = pmt_make_u32vector(N, 0);
173
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
174
uint32_t s0 = uint32_t(10);
175
uint32_t s1 = uint32_t(20);
176
uint32_t s2 = uint32_t(30);
178
pmt_u32vector_set(v1, 0, s0);
179
pmt_u32vector_set(v1, 1, s1);
180
pmt_u32vector_set(v1, 2, s2);
182
CPPUNIT_ASSERT_EQUAL(s0, pmt_u32vector_ref(v1, 0));
183
CPPUNIT_ASSERT_EQUAL(s1, pmt_u32vector_ref(v1, 1));
184
CPPUNIT_ASSERT_EQUAL(s2, pmt_u32vector_ref(v1, 2));
186
CPPUNIT_ASSERT_THROW(pmt_u32vector_ref(v1, N), pmt_out_of_range);
187
CPPUNIT_ASSERT_THROW(pmt_u32vector_set(v1, N, uint32_t(0)), pmt_out_of_range);
190
const uint32_t *rd = pmt_u32vector_elements(v1, len);
191
CPPUNIT_ASSERT_EQUAL(len, N);
192
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
193
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
194
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
196
uint32_t *wr = pmt_u32vector_writable_elements(v1, len);
197
CPPUNIT_ASSERT_EQUAL(len, N);
199
CPPUNIT_ASSERT_EQUAL(uint32_t(0), wr[0]);
200
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
201
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
204
qa_pmt_unv::test_s32vector()
206
static const size_t N = 3;
207
pmt_t v1 = pmt_make_s32vector(N, 0);
208
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
209
int32_t s0 = int32_t(10);
210
int32_t s1 = int32_t(20);
211
int32_t s2 = int32_t(30);
213
pmt_s32vector_set(v1, 0, s0);
214
pmt_s32vector_set(v1, 1, s1);
215
pmt_s32vector_set(v1, 2, s2);
217
CPPUNIT_ASSERT_EQUAL(s0, pmt_s32vector_ref(v1, 0));
218
CPPUNIT_ASSERT_EQUAL(s1, pmt_s32vector_ref(v1, 1));
219
CPPUNIT_ASSERT_EQUAL(s2, pmt_s32vector_ref(v1, 2));
221
CPPUNIT_ASSERT_THROW(pmt_s32vector_ref(v1, N), pmt_out_of_range);
222
CPPUNIT_ASSERT_THROW(pmt_s32vector_set(v1, N, int32_t(0)), pmt_out_of_range);
225
const int32_t *rd = pmt_s32vector_elements(v1, len);
226
CPPUNIT_ASSERT_EQUAL(len, N);
227
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
228
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
229
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
231
int32_t *wr = pmt_s32vector_writable_elements(v1, len);
232
CPPUNIT_ASSERT_EQUAL(len, N);
234
CPPUNIT_ASSERT_EQUAL(int32_t(0), wr[0]);
235
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
236
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
239
qa_pmt_unv::test_u64vector()
241
static const size_t N = 3;
242
pmt_t v1 = pmt_make_u64vector(N, 0);
243
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
244
uint64_t s0 = uint64_t(10);
245
uint64_t s1 = uint64_t(20);
246
uint64_t s2 = uint64_t(30);
248
pmt_u64vector_set(v1, 0, s0);
249
pmt_u64vector_set(v1, 1, s1);
250
pmt_u64vector_set(v1, 2, s2);
252
CPPUNIT_ASSERT_EQUAL(s0, pmt_u64vector_ref(v1, 0));
253
CPPUNIT_ASSERT_EQUAL(s1, pmt_u64vector_ref(v1, 1));
254
CPPUNIT_ASSERT_EQUAL(s2, pmt_u64vector_ref(v1, 2));
256
CPPUNIT_ASSERT_THROW(pmt_u64vector_ref(v1, N), pmt_out_of_range);
257
CPPUNIT_ASSERT_THROW(pmt_u64vector_set(v1, N, uint64_t(0)), pmt_out_of_range);
260
const uint64_t *rd = pmt_u64vector_elements(v1, len);
261
CPPUNIT_ASSERT_EQUAL(len, N);
262
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
263
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
264
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
266
uint64_t *wr = pmt_u64vector_writable_elements(v1, len);
267
CPPUNIT_ASSERT_EQUAL(len, N);
269
CPPUNIT_ASSERT_EQUAL(uint64_t(0), wr[0]);
270
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
271
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
274
qa_pmt_unv::test_s64vector()
276
static const size_t N = 3;
277
pmt_t v1 = pmt_make_s64vector(N, 0);
278
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
279
int64_t s0 = int64_t(10);
280
int64_t s1 = int64_t(20);
281
int64_t s2 = int64_t(30);
283
pmt_s64vector_set(v1, 0, s0);
284
pmt_s64vector_set(v1, 1, s1);
285
pmt_s64vector_set(v1, 2, s2);
287
CPPUNIT_ASSERT_EQUAL(s0, pmt_s64vector_ref(v1, 0));
288
CPPUNIT_ASSERT_EQUAL(s1, pmt_s64vector_ref(v1, 1));
289
CPPUNIT_ASSERT_EQUAL(s2, pmt_s64vector_ref(v1, 2));
291
CPPUNIT_ASSERT_THROW(pmt_s64vector_ref(v1, N), pmt_out_of_range);
292
CPPUNIT_ASSERT_THROW(pmt_s64vector_set(v1, N, int64_t(0)), pmt_out_of_range);
295
const int64_t *rd = pmt_s64vector_elements(v1, len);
296
CPPUNIT_ASSERT_EQUAL(len, N);
297
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
298
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
299
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
301
int64_t *wr = pmt_s64vector_writable_elements(v1, len);
302
CPPUNIT_ASSERT_EQUAL(len, N);
304
CPPUNIT_ASSERT_EQUAL(int64_t(0), wr[0]);
305
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
306
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
309
qa_pmt_unv::test_f32vector()
311
static const size_t N = 3;
312
pmt_t v1 = pmt_make_f32vector(N, 0);
313
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
314
float s0 = float(10);
315
float s1 = float(20);
316
float s2 = float(30);
318
pmt_f32vector_set(v1, 0, s0);
319
pmt_f32vector_set(v1, 1, s1);
320
pmt_f32vector_set(v1, 2, s2);
322
CPPUNIT_ASSERT_EQUAL(s0, pmt_f32vector_ref(v1, 0));
323
CPPUNIT_ASSERT_EQUAL(s1, pmt_f32vector_ref(v1, 1));
324
CPPUNIT_ASSERT_EQUAL(s2, pmt_f32vector_ref(v1, 2));
326
CPPUNIT_ASSERT_THROW(pmt_f32vector_ref(v1, N), pmt_out_of_range);
327
CPPUNIT_ASSERT_THROW(pmt_f32vector_set(v1, N, float(0)), pmt_out_of_range);
330
const float *rd = pmt_f32vector_elements(v1, len);
331
CPPUNIT_ASSERT_EQUAL(len, N);
332
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
333
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
334
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
336
float *wr = pmt_f32vector_writable_elements(v1, len);
337
CPPUNIT_ASSERT_EQUAL(len, N);
339
CPPUNIT_ASSERT_EQUAL(float(0), wr[0]);
340
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
341
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
344
qa_pmt_unv::test_f64vector()
346
static const size_t N = 3;
347
pmt_t v1 = pmt_make_f64vector(N, 0);
348
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
349
double s0 = double(10);
350
double s1 = double(20);
351
double s2 = double(30);
353
pmt_f64vector_set(v1, 0, s0);
354
pmt_f64vector_set(v1, 1, s1);
355
pmt_f64vector_set(v1, 2, s2);
357
CPPUNIT_ASSERT_EQUAL(s0, pmt_f64vector_ref(v1, 0));
358
CPPUNIT_ASSERT_EQUAL(s1, pmt_f64vector_ref(v1, 1));
359
CPPUNIT_ASSERT_EQUAL(s2, pmt_f64vector_ref(v1, 2));
361
CPPUNIT_ASSERT_THROW(pmt_f64vector_ref(v1, N), pmt_out_of_range);
362
CPPUNIT_ASSERT_THROW(pmt_f64vector_set(v1, N, double(0)), pmt_out_of_range);
365
const double *rd = pmt_f64vector_elements(v1, len);
366
CPPUNIT_ASSERT_EQUAL(len, N);
367
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
368
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
369
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
371
double *wr = pmt_f64vector_writable_elements(v1, len);
372
CPPUNIT_ASSERT_EQUAL(len, N);
374
CPPUNIT_ASSERT_EQUAL(double(0), wr[0]);
375
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
376
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
379
qa_pmt_unv::test_c32vector()
381
static const size_t N = 3;
382
pmt_t v1 = pmt_make_c32vector(N, 0);
383
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
384
std::complex<float> s0 = std::complex<float>(10);
385
std::complex<float> s1 = std::complex<float>(20);
386
std::complex<float> s2 = std::complex<float>(30);
388
pmt_c32vector_set(v1, 0, s0);
389
pmt_c32vector_set(v1, 1, s1);
390
pmt_c32vector_set(v1, 2, s2);
392
CPPUNIT_ASSERT_EQUAL(s0, pmt_c32vector_ref(v1, 0));
393
CPPUNIT_ASSERT_EQUAL(s1, pmt_c32vector_ref(v1, 1));
394
CPPUNIT_ASSERT_EQUAL(s2, pmt_c32vector_ref(v1, 2));
396
CPPUNIT_ASSERT_THROW(pmt_c32vector_ref(v1, N), pmt_out_of_range);
397
CPPUNIT_ASSERT_THROW(pmt_c32vector_set(v1, N, std::complex<float>(0)), pmt_out_of_range);
400
const std::complex<float> *rd = pmt_c32vector_elements(v1, len);
401
CPPUNIT_ASSERT_EQUAL(len, N);
402
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
403
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
404
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
406
std::complex<float> *wr = pmt_c32vector_writable_elements(v1, len);
407
CPPUNIT_ASSERT_EQUAL(len, N);
408
wr[0] = std::complex<float>(0);
409
CPPUNIT_ASSERT_EQUAL(std::complex<float>(0), wr[0]);
410
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
411
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);
414
qa_pmt_unv::test_c64vector()
416
static const size_t N = 3;
417
pmt_t v1 = pmt_make_c64vector(N, 0);
418
CPPUNIT_ASSERT_EQUAL(N, pmt_length(v1));
419
std::complex<double> s0 = std::complex<double>(10);
420
std::complex<double> s1 = std::complex<double>(20);
421
std::complex<double> s2 = std::complex<double>(30);
423
pmt_c64vector_set(v1, 0, s0);
424
pmt_c64vector_set(v1, 1, s1);
425
pmt_c64vector_set(v1, 2, s2);
427
CPPUNIT_ASSERT_EQUAL(s0, pmt_c64vector_ref(v1, 0));
428
CPPUNIT_ASSERT_EQUAL(s1, pmt_c64vector_ref(v1, 1));
429
CPPUNIT_ASSERT_EQUAL(s2, pmt_c64vector_ref(v1, 2));
431
CPPUNIT_ASSERT_THROW(pmt_c64vector_ref(v1, N), pmt_out_of_range);
432
CPPUNIT_ASSERT_THROW(pmt_c64vector_set(v1, N, std::complex<double>(0)), pmt_out_of_range);
435
const std::complex<double> *rd = pmt_c64vector_elements(v1, len);
436
CPPUNIT_ASSERT_EQUAL(len, N);
437
CPPUNIT_ASSERT_EQUAL(s0, rd[0]);
438
CPPUNIT_ASSERT_EQUAL(s1, rd[1]);
439
CPPUNIT_ASSERT_EQUAL(s2, rd[2]);
441
std::complex<double> *wr = pmt_c64vector_writable_elements(v1, len);
442
CPPUNIT_ASSERT_EQUAL(len, N);
443
wr[0] = std::complex<double>(0);
444
CPPUNIT_ASSERT_EQUAL(std::complex<double>(0), wr[0]);
445
CPPUNIT_ASSERT_EQUAL(s1, wr[1]);
446
CPPUNIT_ASSERT_EQUAL(s2, wr[2]);