[arrayfire] 23/75: TEST: Adding tests for internal functions

Ghislain Vaillant ghisvail-guest at moszumanska.debian.org
Mon Feb 29 08:01:10 UTC 2016


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

ghisvail-guest pushed a commit to branch dfsg-clean
in repository arrayfire.

commit 86ff134cac58bd104f10aebb51cd5bf4f897a160
Author: Pavan Yalamanchili <pavan at arrayfire.com>
Date:   Thu Feb 11 16:45:42 2016 -0500

    TEST: Adding tests for internal functions
---
 test/internal.cpp | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 124 insertions(+)

diff --git a/test/internal.cpp b/test/internal.cpp
new file mode 100644
index 0000000..75fa54f
--- /dev/null
+++ b/test/internal.cpp
@@ -0,0 +1,124 @@
+/*******************************************************
+ * 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 <af/internal.h>
+#include <string>
+#include <vector>
+#include <testHelpers.hpp>
+
+TEST(Internal, CreateStrided)
+{
+    float ha[] = {1,
+                  101, 102, 103, 104, 105,
+                  201, 202, 203, 204, 205,
+                  301, 302, 303, 304, 305,
+                  401, 402, 403, 404, 405,
+
+                  1010, 1020, 1030, 1040, 1050,
+                  2010, 2020, 2030, 2040, 2050,
+                  3010, 3020, 3030, 3040, 3050,
+                  4010, 4020, 4030, 4040, 4050};
+
+    dim_t offset = 1;
+    unsigned ndims = 3;
+    dim_t dims[] = {3, 3, 2};
+    dim_t strides[] = {1, 5, 20};
+    af::array a = createStridedArray((void *)ha,
+                                     offset,
+                                     af::dim4(ndims, dims),
+                                     af::dim4(ndims, strides),
+                                     f32,
+                                     afHost);
+
+    af::dim4 astrides = getStrides(a);
+    af::dim4 adims = a.dims();
+
+    ASSERT_EQ(offset, getOffset(a));
+    for (int i = 0; i < (int)ndims; i++) {
+        ASSERT_EQ(strides[i], astrides[i]);
+        ASSERT_EQ(dims[i], adims[i]);
+    }
+
+    std::vector<float> va(a.elements());
+    a.host(&va[0]);
+
+    int o = offset;
+    for (int k = 0; k < dims[2]; k++) {
+        for (int j = 0; j < dims[1]; j++) {
+            for (int i = 0; i < dims[0]; i++) {
+                ASSERT_EQ(va[i + j * dims[0] + k * dims[0] * dims[1]],
+                          ha[i * strides[0] + j * strides[1] + k * strides[2] + o])
+                    << "at ("
+                    << i << ","
+                    << j << ","
+                    << k << ")";
+            }
+        }
+    }
+}
+
+TEST(Internal, CheckInfo)
+{
+    int xdim = 10;
+    int ydim = 8;
+
+    int xoff = 1;
+    int yoff = 2;
+
+    int xnum = 5;
+    int ynum = 3;
+
+    af::array a = af::randu(10, 8);
+
+    af::array b = a(af::seq(xoff, xoff + xnum - 1),
+                    af::seq(yoff, yoff + ynum - 1));
+
+    af::dim4 strides = getStrides(b);
+    af::dim4 dims = b.dims();
+
+    dim_t offset = xoff + yoff * xdim;
+
+    ASSERT_EQ(dims[0], xnum);
+    ASSERT_EQ(dims[1], ynum);
+    ASSERT_EQ(isOwner(a), true);
+    ASSERT_EQ(isOwner(b), false);
+
+    ASSERT_EQ(getOffset(b), offset);
+    ASSERT_EQ(strides[0], 1);
+    ASSERT_EQ(strides[1], xdim);
+    ASSERT_EQ(strides[2], xdim * ydim);
+    ASSERT_EQ(getRawPtr(a), getRawPtr(b));
+}
+
+TEST(Internal, Linear)
+{
+    af::array c;
+    {
+        af::array a = af::randu(10, 8);
+
+        // b is just pointing to same underlying data
+        // b is an owner;
+        af::array b = a;
+        ASSERT_EQ(isOwner(b), true);
+
+        // C is considered sub array
+        // C will not be an owner
+        c = a(af::span);
+        ASSERT_EQ(isOwner(c), false);
+    }
+
+    // Even though a and b are out of scope, c is still not an owner
+    {
+        ASSERT_EQ(isOwner(c), false);
+    }
+}

-- 
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