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

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