Index: trunk/psLib/test/imageops/tap_psImageInterpolate2.c
===================================================================
--- trunk/psLib/test/imageops/tap_psImageInterpolate2.c	(revision 19129)
+++ trunk/psLib/test/imageops/tap_psImageInterpolate2.c	(revision 20306)
@@ -79,7 +79,6 @@
     psRandom *rng = psRandomAlloc(PS_RANDOM_TAUS, 12345);
 
-    psImageInterpolateOptions *interp = psImageInterpolateOptionsAlloc(mode, image,
-                                                                       variance, mask, 0, NAN, NAN,
-                                                                       0, 0, 0.0);
+    psImageInterpolation *interp = psImageInterpolationAlloc(mode, image, variance, mask, 0, NAN, NAN,
+                                                             0, 0, 0.0, 0);
     ok(interp, "Interpolation options set");
     skip_start(!interp, 2 * num, "Interpolation options failed");
@@ -93,28 +92,19 @@
         psMaskType maskVal;
 
-        psImageInterpolateStatus status = psImageInterpolate(&imageVal, &varianceVal, &maskVal, x, y, interp);
-        ok(status != PS_INTERPOLATE_STATUS_ERROR, "Interpolation at %.2f,%.2f (%x)", x, y, status);
-        skip_start(status == PS_INTERPOLATE_STATUS_ERROR, 1, "Interpolation failed");
+        psImageInterpolateStatus interpOK = psImageInterpolate(&imageVal, &varianceVal, &maskVal,
+                                                               x, y, interp);
+        ok(interpOK != PS_INTERPOLATE_STATUS_ERROR, "Interpolation at %.2f,%.2f (%x)", x, y, interpOK);
+        skip_start(interpOK == PS_INTERPOLATE_STATUS_ERROR, 1, "Interpolation failed");
 
-        int xCentral, yCentral;         // Central pixel of interpolation
-        switch (mode) {
-          case PS_INTERPOLATE_BICUBE:
-          case PS_INTERPOLATE_GAUSS:
-            xCentral = x;
-            yCentral = y;
-            break;
-          default:
-            xCentral = floor(x - 0.5);
-            yCentral = floor(y - 0.5);
-            break;
-        }
+        int xCentral = x - 0.5, yCentral = y - 0.5; // Central pixel of interpolation
 
         if (xCentral - (xKernel - 1) / 2 < 0 || xCentral + xKernel / 2 > xSize - 1 ||
             yCentral - (yKernel - 1) / 2 < 0 || yCentral + yKernel / 2 > ySize - 1) {
-            ok(status == PS_INTERPOLATE_STATUS_BAD || status == PS_INTERPOLATE_STATUS_POOR,
-               "Interpolation at border");
+            ok(interpOK == PS_INTERPOLATE_STATUS_OFF || interpOK == PS_INTERPOLATE_STATUS_BAD ||
+               interpOK == PS_INTERPOLATE_STATUS_POOR,
+               "Interpolation at %.2f,%.2f (border): %x", x, y, interpOK);
         } else {
-            is_double_tol(imageVal, imageFunc(x, y), tol, "Interpolation = %f vs %f",
-                          imageVal, imageFunc(x, y));
+            is_double_tol(imageVal, imageFunc(x, y), tol, "Interpolation = %f vs %f (%d)",
+                          imageVal, imageFunc(x, y), interpOK);
         }
 
@@ -146,6 +136,6 @@
     check(16, 16, PS_TYPE_F64, 32, PS_INTERPOLATE_BILINEAR, 2, 2, 1.0e-6); // 66 tests
 
-    check(16, 16, PS_TYPE_F32, 32, PS_INTERPOLATE_BICUBE, 3, 3, 1.0e-6); // 66 tests
-    check(16, 16, PS_TYPE_F64, 32, PS_INTERPOLATE_BICUBE, 3, 3, 1.0e-6); // 66 tests
+    check(16, 16, PS_TYPE_F32, 32, PS_INTERPOLATE_BIQUADRATIC, 3, 3, 1.0e-6); // 66 tests
+    check(16, 16, PS_TYPE_F64, 32, PS_INTERPOLATE_BIQUADRATIC, 3, 3, 1.0e-6); // 66 tests
 
     check(16, 16, PS_TYPE_F32, 32, PS_INTERPOLATE_GAUSS, 3, 3, 1.0e-3); // 66 tests
