[arrayfire] 224/284: Added transform coordinates unit tests

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Sun Feb 7 18:59:35 UTC 2016


This is an automated email from the git hooks/post-receive script.

ghisvail-guest pushed a commit to branch debian/experimental
in repository arrayfire.

commit 7f3e2159537da233adcd3f66492e7e0cf11814fe
Author: Peter Andreas Entschev <peter at arrayfire.com>
Date:   Fri Jan 15 23:42:52 2016 -0500

    Added transform coordinates unit tests
---
 test/transform_coordinates.cpp | 118 +++++++++++++++++++++++++++++++++++++++++
 1 file changed, 118 insertions(+)

diff --git a/test/transform_coordinates.cpp b/test/transform_coordinates.cpp
new file mode 100644
index 0000000..7f1ac4e
--- /dev/null
+++ b/test/transform_coordinates.cpp
@@ -0,0 +1,118 @@
+/*******************************************************
+ * Copyright (c) 2014, ArrayFire
+ * All rights reserved.
+ *
+ * This file is distributed under 3-clause BSD license.
+ * The complete license agreement can be obtained at:
+ * http://arrayfire.com/licenses/BSD-3-Clause
+ ********************************************************/
+
+#include <gtest/gtest.h>
+#include <arrayfire.h>
+#include <af/dim4.hpp>
+#include <af/traits.hpp>
+#include <vector>
+#include <iostream>
+#include <string>
+#include <testHelpers.hpp>
+
+using std::vector;
+using std::string;
+using std::cout;
+using std::endl;
+
+template<typename T>
+class TransformCoordinates : public ::testing::Test
+{
+    public:
+        virtual void SetUp() {}
+};
+
+typedef ::testing::Types<float, double> TestTypes;
+
+TYPED_TEST_CASE(TransformCoordinates, TestTypes);
+
+template<typename T>
+void transformCoordinatesTest(string pTestFile)
+{
+    if (noDoubleTests<T>()) return;
+
+    vector<af::dim4>       inDims;
+    vector<vector<T> >     in;
+    vector<vector<float> > gold;
+
+    readTests<T, float, float>(pTestFile, inDims, in, gold);
+
+    af_array tfArray = 0;
+    af_array outArray = 0;
+    ASSERT_EQ(AF_SUCCESS, af_create_array(&tfArray, &(in[0].front()), inDims[0].ndims(), inDims[0].get(), (af_dtype)af::dtype_traits<T>::af_type));
+
+    size_t nTests = in.size();
+
+    for (int test = 1; test < nTests; test++) {
+        dim_t d0 = (dim_t)in[test][0];
+        dim_t d1 = (dim_t)in[test][1];
+
+        ASSERT_EQ(AF_SUCCESS, af_transform_coordinates(&outArray, tfArray, d0, d1));
+
+        // Get result
+        dim_t outEl = 0;
+        ASSERT_EQ(AF_SUCCESS, af_get_elements(&outEl, outArray));
+        T* outData = new T[outEl];
+        ASSERT_EQ(AF_SUCCESS, af_get_data_ptr((void*)outData, outArray));
+
+        const float thr = 1.f;
+
+        for (size_t elIter = 0; elIter < outEl; elIter++) {
+            ASSERT_LE(fabs(outData[elIter] - gold[test-1][elIter]), thr) << "at: " << elIter << std::endl;
+        }
+
+        delete[] outData;
+    }
+
+    if(tfArray  != 0) af_release_array(tfArray);
+    if(outArray != 0) af_release_array(outArray);
+}
+
+TYPED_TEST(TransformCoordinates, RotateMatrix)
+{
+    transformCoordinatesTest<TypeParam>(string(TEST_DIR"/transformCoordinates/rotate_matrix.test"));
+}
+
+TYPED_TEST(TransformCoordinates, 3DMatrix)
+{
+    transformCoordinatesTest<TypeParam>(string(TEST_DIR"/transformCoordinates/3d_matrix.test"));
+}
+
+///////////////////////////////////// CPP ////////////////////////////////
+//
+TEST(TransformCoordinates, CPP)
+{
+    vector<af::dim4>       inDims;
+    vector<vector<float> > in;
+    vector<vector<float> > gold;
+
+    readTests<float, float, float>(TEST_DIR"/transformCoordinates/3d_matrix.test",inDims,in,gold);
+
+    af::array tf = af::array(inDims[0][0], inDims[0][1], &(in[0].front()));
+
+    float d0 = in[1][0];
+    float d1 = in[1][1];
+
+    af::array out = af::transformCoordinates(tf, d0, d1);
+
+    af::dim4 outDims = out.dims();
+
+    float* h_out = new float[outDims[0] * outDims[1]];
+    out.host(h_out);
+
+    const size_t n = gold[0].size();
+
+    const float thr = 1.f;
+
+    for (size_t elIter = 0; elIter < n; elIter++) {
+        ASSERT_LE(fabs(h_out[elIter] - gold[0][elIter]), thr) << "at: " << elIter << std::endl;
+    }
+
+    delete[] h_out;
+}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/debian-science/packages/arrayfire.git



More information about the debian-science-commits mailing list