diff --git a/src/test/java/com/aparapi/runtime/IntArray2DTest.java b/src/test/java/com/aparapi/runtime/IntArray2DTest.java
index 657186c5e0578ed90bc17dadc9cac8e773eef98f..cdae400fc4dd8305dd0ba4119866c731da57e73a 100644
--- a/src/test/java/com/aparapi/runtime/IntArray2DTest.java
+++ b/src/test/java/com/aparapi/runtime/IntArray2DTest.java
@@ -17,46 +17,70 @@ package com.aparapi.runtime;
 
 import com.aparapi.Kernel;
 import com.aparapi.Range;
-import org.junit.Test;
+import com.aparapi.device.Device;
+import com.aparapi.device.OpenCLDevice;
+import com.aparapi.internal.kernel.KernelManager;
+
+import static org.junit.Assert.*;
+import static org.junit.Assume.*;
 
-import static org.junit.Assert.assertEquals;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
 
 public class IntArray2DTest {
+    private static OpenCLDevice openCLDevice = null;
+    private int[] targetArray;
+
+    @Before
+    public void setUpBeforeClass() throws Exception {
+        Device device = KernelManager.instance().bestDevice();
+        assumeTrue (device != null && device instanceof OpenCLDevice);
+        openCLDevice = (OpenCLDevice) device;
+    }
+
+    @After
+    public void classTeardown() {
+        Util.resetKernelManager();
+    }
+    
+
     @Test
     public void test() {
         int size = 128;
         final int count = 3;
         final int[][] V = new int[count][size];
+        final int[][] totals = new int[count][size];
 
         //lets fill in V randomly...
         for (int j = 0; j < count; j++) {
             for (int i = 0; i < size; i++) {
-                //random number either 0, 1, or 2
-                V[j][i] = (int) (Math.random() * 3);
+                //test number either 0, 1, or 2
+                totals[j][i] = V[j][i] = (i + j) % 3;
             }
         }
 
-        Kernel sumConstantKernel= null;
-        final int totals[][] = V;
-        try {
-            sumConstantKernel = new Kernel() {
+        final Kernel kernel = new Kernel() {
                 @Override
                 public void run() {
                     int gid = getGlobalId();
                     for(int index = 0; index < count; index++) {
-                        totals[index][gid] += gid + 1;
+                        totals[index][gid] += gid + 3;
                     }
                 }
             };
-            sumConstantKernel.execute(Range.create(size));
-        } finally {
-            sumConstantKernel.dispose();
-        }
+            
+        final Range range = openCLDevice.createRange(size);
+        try {
+            kernel.execute(range);
 
-        for (int index = 0; index < count; index++) {
-            for (int gid = 0; gid < size; gid++) {
-                assertEquals(V[index][gid] + gid + 1, totals[index][gid]);
+            for (int index = 0; index < count; index++) {
+                for (int gid = 0; gid < size; gid++) {
+                    assertEquals("Testing for index: " + index + " and gid: " + gid, V[index][gid] + gid + 3, totals[index][gid]);
+                }
             }
+        } finally {
+            kernel.dispose();
         }
     }
-}
\ No newline at end of file
+}