public virtual void test_bind_invalidOrder()
        {
            GridSurfaceInterpolator test = GridSurfaceInterpolator.of(LINEAR, LINEAR);

            assertThrowsIllegalArg(() => test.bind(DoubleArray.of(1d, 1d, 0d, 0d), DoubleArray.of(1d, 2d, 1d, 2d), DoubleArray.of(1d, 1d, 1d, 1d)));
            assertThrowsIllegalArg(() => test.bind(DoubleArray.of(1d, 1d, 2d, 2d), DoubleArray.of(1d, 0d, 1d, 0d), DoubleArray.of(1d, 1d, 1d, 1d)));
        }
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            GridSurfaceInterpolator test = GridSurfaceInterpolator.of(LINEAR, FLAT, FLAT, LINEAR, FLAT, FLAT);

            coverImmutableBean(test);
            GridSurfaceInterpolator test2 = GridSurfaceInterpolator.of(DOUBLE_QUADRATIC, LOG_LINEAR, LOG_LINEAR, DOUBLE_QUADRATIC, LOG_LINEAR, LOG_LINEAR);

            coverBeanEquals(test, test2);
        }
        public virtual void test_of6()
        {
            GridSurfaceInterpolator test = GridSurfaceInterpolator.of(LINEAR, EXPONENTIAL, EXPONENTIAL, LINEAR, EXPONENTIAL, EXPONENTIAL);

            assertEquals(test.XInterpolator, LINEAR);
            assertEquals(test.XExtrapolatorLeft, EXPONENTIAL);
            assertEquals(test.XExtrapolatorRight, EXPONENTIAL);
            assertEquals(test.YInterpolator, LINEAR);
            assertEquals(test.YExtrapolatorLeft, EXPONENTIAL);
            assertEquals(test.YExtrapolatorRight, EXPONENTIAL);
        }
        //-------------------------------------------------------------------------
        public virtual void test_of2()
        {
            GridSurfaceInterpolator test = GridSurfaceInterpolator.of(LINEAR, LINEAR);

            assertEquals(test.XInterpolator, LINEAR);
            assertEquals(test.XExtrapolatorLeft, FLAT);
            assertEquals(test.XExtrapolatorRight, FLAT);
            assertEquals(test.YInterpolator, LINEAR);
            assertEquals(test.YExtrapolatorLeft, FLAT);
            assertEquals(test.YExtrapolatorRight, FLAT);
        }
        //-------------------------------------------------------------------------
        public virtual void test_interpolation()
        {
            GridSurfaceInterpolator  test = GridSurfaceInterpolator.of(LINEAR, FLAT, FLAT, LINEAR, FLAT, FLAT);
            BoundSurfaceInterpolator bci  = test.bind(X_DATA, Y_DATA, Z_DATA);

            for (int i = 0; i < X_DATA.size(); i++)
            {
                assertEquals(bci.interpolate(X_DATA.get(i), Y_DATA.get(i)), Z_DATA.get(i), TOL);
            }
            for (int i = 0; i < X_TEST.size(); i++)
            {
                assertEquals(bci.interpolate(X_TEST.get(i), Y_TEST.get(i)), Z_TEST.get(i), TOL);
            }
        }
        public virtual void test_serialization()
        {
            GridSurfaceInterpolator test = GridSurfaceInterpolator.of(LINEAR, FLAT, FLAT, LINEAR, FLAT, FLAT);

            assertSerialization(test);
        }