Mercurial > hg > silvet
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 |