comparison bqvec/test/TestAllocators.cpp @ 372:af71cbdab621 tip

Update bqvec code
author Chris Cannam
date Tue, 19 Nov 2019 10:13:32 +0000
parents
children
comparison
equal deleted inserted replaced
371:426ce52ef096 372:af71cbdab621
1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
2
3 #include "bqvec/VectorOps.h"
4 #include "bqvec/Allocators.h"
5
6 #define BOOST_TEST_DYN_LINK
7 #define BOOST_TEST_MAIN
8
9 #include <boost/test/unit_test.hpp>
10
11 #include <stdexcept>
12 #include <vector>
13
14 using namespace breakfastquay;
15
16 BOOST_AUTO_TEST_SUITE(TestAllocators)
17
18 #define COMPARE_ARRAY(a, b) \
19 for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \
20 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \
21 }
22
23 #define COMPARE_N(a, b, n) \
24 for (int cmp_i = 0; cmp_i < n; ++cmp_i) { \
25 BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \
26 }
27
28 BOOST_AUTO_TEST_CASE(alloc_dealloc)
29 {
30 double *v = allocate<double>(4);
31 v[0] = 0.1;
32 v[1] = 2.0;
33 v[2] = -0.3;
34 v[3] = 4.0;
35 double *e = allocate<double>(4);
36 e[0] = -0.3;
37 e[1] = 4.0;
38 e[2] = 0.1;
39 e[3] = 2.0;
40 v_fftshift(v, 4);
41 COMPARE_N(v, e, 4);
42 deallocate(v);
43 deallocate(e);
44 }
45
46 BOOST_AUTO_TEST_CASE(alloc_zero)
47 {
48 double *v = allocate_and_zero<double>(4);
49 BOOST_CHECK_EQUAL(v[0], 0.f);
50 BOOST_CHECK_EQUAL(v[1], 0.f);
51 BOOST_CHECK_EQUAL(v[2], 0.f);
52 BOOST_CHECK_EQUAL(v[3], 0.f);
53 deallocate(v);
54 }
55
56 BOOST_AUTO_TEST_CASE(alloc_dealloc_channels)
57 {
58 double **v = allocate_channels<double>(2, 4);
59 v[0][0] = 0.1;
60 v[0][1] = 2.0;
61 v[0][2] = -0.3;
62 v[0][3] = 4.0;
63 v[1][0] = -0.3;
64 v[1][1] = 4.0;
65 v[1][2] = 0.1;
66 v[1][3] = 2.0;
67 v_fftshift(v[0], 4);
68 COMPARE_N(v[0], v[1], 4);
69 deallocate_channels(v, 2);
70 }
71
72 BOOST_AUTO_TEST_CASE(stl)
73 {
74 std::vector<double, StlAllocator<double> > v;
75 v.push_back(0.1);
76 v.push_back(2.0);
77 v.push_back(-0.3);
78 v.push_back(4.0);
79 double e[] = { -0.3, 4.0, 0.1, 2.0 };
80 v_fftshift(v.data(), 4);
81 COMPARE_N(v.data(), e, 4);
82 }
83
84 BOOST_AUTO_TEST_SUITE_END()
85