Chris@372: /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */ Chris@372: Chris@372: #include "bqvec/VectorOps.h" Chris@372: #include "bqvec/Allocators.h" Chris@372: Chris@372: #define BOOST_TEST_DYN_LINK Chris@372: #define BOOST_TEST_MAIN Chris@372: Chris@372: #include Chris@372: Chris@372: #include Chris@372: #include Chris@372: Chris@372: using namespace breakfastquay; Chris@372: Chris@372: BOOST_AUTO_TEST_SUITE(TestAllocators) Chris@372: Chris@372: #define COMPARE_ARRAY(a, b) \ Chris@372: for (int cmp_i = 0; cmp_i < (int)(sizeof(a)/sizeof(a[0])); ++cmp_i) { \ Chris@372: BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \ Chris@372: } Chris@372: Chris@372: #define COMPARE_N(a, b, n) \ Chris@372: for (int cmp_i = 0; cmp_i < n; ++cmp_i) { \ Chris@372: BOOST_CHECK_SMALL(a[cmp_i] - b[cmp_i], 1e-14); \ Chris@372: } Chris@372: Chris@372: BOOST_AUTO_TEST_CASE(alloc_dealloc) Chris@372: { Chris@372: double *v = allocate(4); Chris@372: v[0] = 0.1; Chris@372: v[1] = 2.0; Chris@372: v[2] = -0.3; Chris@372: v[3] = 4.0; Chris@372: double *e = allocate(4); Chris@372: e[0] = -0.3; Chris@372: e[1] = 4.0; Chris@372: e[2] = 0.1; Chris@372: e[3] = 2.0; Chris@372: v_fftshift(v, 4); Chris@372: COMPARE_N(v, e, 4); Chris@372: deallocate(v); Chris@372: deallocate(e); Chris@372: } Chris@372: Chris@372: BOOST_AUTO_TEST_CASE(alloc_zero) Chris@372: { Chris@372: double *v = allocate_and_zero(4); Chris@372: BOOST_CHECK_EQUAL(v[0], 0.f); Chris@372: BOOST_CHECK_EQUAL(v[1], 0.f); Chris@372: BOOST_CHECK_EQUAL(v[2], 0.f); Chris@372: BOOST_CHECK_EQUAL(v[3], 0.f); Chris@372: deallocate(v); Chris@372: } Chris@372: Chris@372: BOOST_AUTO_TEST_CASE(alloc_dealloc_channels) Chris@372: { Chris@372: double **v = allocate_channels(2, 4); Chris@372: v[0][0] = 0.1; Chris@372: v[0][1] = 2.0; Chris@372: v[0][2] = -0.3; Chris@372: v[0][3] = 4.0; Chris@372: v[1][0] = -0.3; Chris@372: v[1][1] = 4.0; Chris@372: v[1][2] = 0.1; Chris@372: v[1][3] = 2.0; Chris@372: v_fftshift(v[0], 4); Chris@372: COMPARE_N(v[0], v[1], 4); Chris@372: deallocate_channels(v, 2); Chris@372: } Chris@372: Chris@372: BOOST_AUTO_TEST_CASE(stl) Chris@372: { Chris@372: std::vector > v; Chris@372: v.push_back(0.1); Chris@372: v.push_back(2.0); Chris@372: v.push_back(-0.3); Chris@372: v.push_back(4.0); Chris@372: double e[] = { -0.3, 4.0, 0.1, 2.0 }; Chris@372: v_fftshift(v.data(), 4); Chris@372: COMPARE_N(v.data(), e, 4); Chris@372: } Chris@372: Chris@372: BOOST_AUTO_TEST_SUITE_END() Chris@372: