This is the mail archive of the mauve-patches@sources.redhat.com mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

DataBuffer constructors


Please find attached some tests for the constructors of the concrete
subclasses of DataBuffer (DataBufferByte, DataBufferDouble,
DataBufferFloat, DataBufferInt, DataBufferShort and DataBufferUShort).

The consequences of using null arguments in these constructors are not
specified anywhere.  Classpath and JDK 1.4 appear to be consistent with
each other except in the DataBufferUShort class.  In the tests I'm
submitting, this shows up as 2 failures in Classpath, but without a
clear spec the tests could just as easily be reversed to show failures
in Sun's implementation.

Anyone have any guidance on how this should be treated in Mauve?

Regards,

Dave Gilbert


//Tags: JDK1.2

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferByte;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferByte;

/**
 * Some tests for the constructors in the {@link DataBufferByte} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);
  }

  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferByte(int)");
    DataBufferByte b1 = new DataBufferByte(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_BYTE);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);
  
    DataBufferByte b2 = new DataBufferByte(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);
  
    boolean pass = false;
    try 
    {
      DataBufferByte b3 = new DataBufferByte(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor2(TestHarness harness)   
  {
    harness.checkPoint("DataBufferByte(byte[][], int)");
    byte[][] source = new byte[][] {{1, 2}};
    DataBufferByte b = new DataBufferByte(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
  
    // does a change to the source array affect the buffer? yes
    byte[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1);
    source[0][0] = 3;
    harness.check(banks[0][0] == 3);
  
    // check null source
    boolean pass = false;
    try 
    {
      DataBufferByte b1 = new DataBufferByte((byte[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    // check negative size
    DataBufferByte b1 = new DataBufferByte(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness)  
  {
    harness.checkPoint("DataBufferByte(byte[][], int, int[])");
    byte[][] source = new byte[][] {{1, 2}};
    DataBufferByte b = new DataBufferByte(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new byte[][] {{1, 2, 3}, {4, 5, 6, 7}};
    b = new DataBufferByte(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    // check null source
    boolean pass = false;
    try 
    {
      DataBufferByte b1 = new DataBufferByte((byte[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    // check null offsets
    pass = false;
    try 
    {
      DataBufferByte b1 = new DataBufferByte(new byte[][]{{1, 2}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
   
    // check source doesn't match offsets array
    pass = false;
    try
    {
      DataBufferByte b2 = new DataBufferByte(new byte[][]{{1, 2}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);
  
  }

  private void testConstructor4(TestHarness harness) 
  {
    harness.checkPoint("DataBufferByte(byte[], int)");
    DataBufferByte b = new DataBufferByte(new byte[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
  
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferByte b1 = new DataBufferByte((byte[]) null, 1);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness) 
  {
    harness.checkPoint("DataBufferByte(byte[], int, int)");
    DataBufferByte b = new DataBufferByte(new byte[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
  
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferByte b1 = new DataBufferByte((byte[]) null, 1, 0);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    // does negative size fail? no
    pass = true;
    try 
    {
      b1 = new DataBufferByte(new byte[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);
    
  }

  private void testConstructor6(TestHarness harness)  
  {
    harness.checkPoint("DataBufferByte(int, int)");
    DataBufferByte b = new DataBufferByte(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0);
  
    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferByte b1 = new DataBufferByte(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferByte b1 = new DataBufferByte(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

}

//Tags: JDK1.4

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferDouble;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferDouble;

/**
 * Some tests for the constructors in the {@link DataBufferDouble} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);  
  }

  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferDouble(int)");
    DataBufferDouble b1 = new DataBufferDouble(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_DOUBLE);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);

    DataBufferDouble b2 = new DataBufferDouble(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);

    boolean pass = false;
    try 
    {
        DataBufferDouble b3 = new DataBufferDouble(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor2(TestHarness harness)   
  {
    harness.checkPoint("DataBufferDouble(double[][], int)");
    double[][] source = new double[][] {{1.0, 2.0}};
    DataBufferDouble b = new DataBufferDouble(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // does a change to the source array affect the buffer? yes
    double[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1.0);
    source[0][0] = 3.0;
    harness.check(banks[0][0] == 3.0);

    // check null source
    boolean pass = false;
    try 
    {
      DataBufferDouble b1 = new DataBufferDouble((double[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    // check negative size
    DataBufferDouble b1 = new DataBufferDouble(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness)  
  {
    harness.checkPoint("DataBufferDouble(double[][], int, int[])");
    double[][] source = new double[][] {{1, 2}};
    DataBufferDouble b = new DataBufferDouble(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new double[][] {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0, 7.0}};
    b = new DataBufferDouble(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    // check null source
    boolean pass = false;
    try 
    {
      DataBufferDouble b1 = new DataBufferDouble((double[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // check null offsets
    pass = false;
    try 
    {
      DataBufferDouble b1 = new DataBufferDouble(new double[][]{{1.0, 2.0}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass); 
 
    // check source doesn't match offsets array
    pass = false;
    try
    {
      DataBufferDouble b2 = new DataBufferDouble(new double[][]{{1.0, 2.0}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);

  }

  private void testConstructor4(TestHarness harness) 
  {
    harness.checkPoint("DataBufferDouble(double[], int)");
    DataBufferDouble b = new DataBufferDouble(new double[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
 
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferDouble b1 = new DataBufferDouble((double[]) null, 1);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness)  
  {
    harness.checkPoint("DataBufferDouble(double[], int, int)");
    DataBufferDouble b = new DataBufferDouble(new double[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferDouble b1 = new DataBufferDouble((double[]) null, 1, 0);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    // does negative size fail? no
    pass = true;
    try 
    {
      b1 = new DataBufferDouble(new double[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);
  
  }

  private void testConstructor6(TestHarness harness)  
  {
    harness.checkPoint("DataBufferDouble(int, int)");
    DataBufferDouble b = new DataBufferDouble(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0) ;
 
    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferDouble b1 = new DataBufferDouble(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferDouble b1 = new DataBufferDouble(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass); 
  }

}

//Tags: JDK1.4

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferFloat;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferFloat;

/**
 * Some tests for the constructors in the {@link DataBufferFloat} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);   
  }

  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferFloat(int)");
    DataBufferFloat b1 = new DataBufferFloat(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_FLOAT);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);

    DataBufferFloat b2 = new DataBufferFloat(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);

    boolean pass = false;
    try 
    {
      DataBufferFloat b3 = new DataBufferFloat(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor2(TestHarness harness)   
  {
    harness.checkPoint("DataBufferFloat(float[][], int)");
    float[][] source = new float[][] {{1.0f, 2.0f}};
    DataBufferFloat b = new DataBufferFloat(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // does a change to the source array affect the buffer? yes
    float[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1.0f);
    source[0][0] = 3.0f;
    harness.check(banks[0][0] == 3.0f);

    // check null source
    boolean pass = false;
    try 
    {
      DataBufferFloat b1 = new DataBufferFloat((float[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // check negative size
    DataBufferFloat b1 = new DataBufferFloat(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness)  
  {
    harness.checkPoint("DataBufferFloat(float[][], int, int[])");
    float[][] source = new float[][] {{1, 2}};
    DataBufferFloat b = new DataBufferFloat(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new float[][] {{1.0f, 2.0f, 3.0f}, {4.0f, 5.0f, 6.0f, 7.0f}};
    b = new DataBufferFloat(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    // check null source
    boolean pass = false;
    try 
    {
      DataBufferFloat b1 = new DataBufferFloat((float[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // check null offsets
    pass = false;
    try 
    {
      DataBufferFloat b1 = new DataBufferFloat(new float[][]{{1.0f, 2.0f}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass); 

    // check source doesn't match offsets array
    pass = false;
    try
    {
      DataBufferFloat b2 = new DataBufferFloat(new float[][]{{1.0f, 2.0f}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);

  }

  private void testConstructor4(TestHarness harness) 
  {
    harness.checkPoint("DataBufferFloat(float[], int)");
    DataBufferFloat b = new DataBufferFloat(new float[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferFloat b1 = new DataBufferFloat((float[]) null, 1);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness)  
  {
    harness.checkPoint("DataBufferFloat(float[], int, int)");
    DataBufferFloat b = new DataBufferFloat(new float[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferFloat b1 = new DataBufferFloat((float[]) null, 1, 0);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    // does negative size fail? no
    pass = true;
    try 
    {
      b1 = new DataBufferFloat(new float[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);

  }

  private void testConstructor6(TestHarness harness)    
  {
    harness.checkPoint("DataBufferFloat(int, int)");
    DataBufferFloat b = new DataBufferFloat(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0);
 
    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferFloat b1 = new DataBufferFloat(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferFloat b1 = new DataBufferFloat(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass); 
  }

}

//Tags: JDK1.2

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferInt;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferInt;

/**
 * Some tests for the constructors in the {@link DataBufferInt} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);
  }
  
  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int)");
    DataBufferInt b1 = new DataBufferInt(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_INT);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);
    
    DataBufferInt b2 = new DataBufferInt(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);
    
    boolean pass = false;
    try 
    {
      DataBufferInt b3 = new DataBufferInt(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor2(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int[][], int)");
    int[][] source = new int[][] {{1, 2}};
    DataBufferInt b = new DataBufferInt(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
    
    // does a change to the source array affect the buffer? yes
    int[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1);
    source[0][0] = 3;
    harness.check(banks[0][0] == 3);
    
    // check null source
    boolean pass = false;
    try 
    {
      DataBufferInt b1 = new DataBufferInt((int[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    // check negative size
    DataBufferInt b1 = new DataBufferInt(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int[][], int, int[])");
    int[][] source = new int[][] {{1, 2}};
    DataBufferInt b = new DataBufferInt(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new int[][] {{1, 2, 3}, {4, 5, 6, 7}};
    b = new DataBufferInt(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    boolean pass = false;
    try 
    {
      DataBufferInt b1 = new DataBufferInt((int[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    pass = false;
    try 
    {
      DataBufferInt b1 = new DataBufferInt(new int[][]{{1, 2}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
    
    pass = false;
    try
    {
      DataBufferInt b2 = new DataBufferInt(new int[][]{{1, 2}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);
    
  }

  private void testConstructor4(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int[], int)");
    DataBufferInt b = new DataBufferInt(new int[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
    
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferInt b1 = new DataBufferInt((int[]) null, 1);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int[], int, int)");
    DataBufferInt b = new DataBufferInt(new int[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
    
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferInt b1 = new DataBufferInt((int[]) null, 1, 0);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative size fail? no
    pass = true;
    try 
    {
      b1 = new DataBufferInt(new int[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);
  }

  private void testConstructor6(TestHarness harness) 
  {
    harness.checkPoint("DataBufferInt(int, int)");
    DataBufferInt b = new DataBufferInt(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0);
    
    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferInt b1 = new DataBufferInt(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferInt b1 = new DataBufferInt(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

}
//Tags: JDK1.2

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferShort;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferShort;

/**
 * Some tests for the constructors in the {@link DataBufferShort} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);
  }

  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferShort(int)");
    DataBufferShort b1 = new DataBufferShort(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_SHORT);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);
  
    DataBufferShort b2 = new DataBufferShort(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);
  
    boolean pass = false;
    try 
    {
        DataBufferShort b3 = new DataBufferShort(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass); 
  }

  private void testConstructor2(TestHarness harness)  
  {
    harness.checkPoint("DataBufferShort(short[][], int)");
    short[][] source = new short[][] {{1, 2}};
    DataBufferShort b = new DataBufferShort(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
  
    // does a change to the source array affect the buffer? yes
    short[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1);
    source[0][0] = 3;
    harness.check(banks[0][0] == 3);
  
    // check null source
    boolean pass = false;
    try 
    {
        DataBufferShort b1 = new DataBufferShort((short[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    // check negative size
    DataBufferShort b1 = new DataBufferShort(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness) 
  {
    harness.checkPoint("DataBufferShort(short[][], int, int[])");
    short[][] source = new short[][] {{1, 2}};
    DataBufferShort b = new DataBufferShort(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
    b = new DataBufferShort(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    boolean pass = false;
    try 
    {
      DataBufferShort b1 = new DataBufferShort((short[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    pass = false;
    try 
    {
      DataBufferShort b1 = new DataBufferShort(new short[][]{{1, 2}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  
    pass = false;
    try
    {
      DataBufferShort b2 = new DataBufferShort(new short[][]{{1, 2}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);
  
  }

  private void testConstructor4(TestHarness harness)  
  {
    harness.checkPoint("DataBufferShort(short[], int)");
    DataBufferShort b = new DataBufferShort(new short[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
   
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferShort b1 = new DataBufferShort((short[]) null, 1);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness) 
  {
    harness.checkPoint("DataBufferShort(short[], int, int)");
    DataBufferShort b = new DataBufferShort(new short[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);
  
    // this constructor doesn't throw an exception until you
    // try to access the (null) data bank
    boolean pass = false;
    DataBufferShort b1 = new DataBufferShort((short[]) null, 1, 0);
    try 
    {
      int ignore = b1.getElem(0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative size fail? no
    pass = true;
    try 
    {
      b1 = new DataBufferShort(new short[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);  
  }

  private void testConstructor6(TestHarness harness) 
  {
    harness.checkPoint("DataBufferShort(int, int)");
    DataBufferShort b = new DataBufferShort(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0);
  
    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferShort b1 = new DataBufferShort(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    } 
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferShort b1 = new DataBufferShort(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

}
//Tags: JDK1.2

//Copyright (C) 2004 David Gilbert <david.gilbert@object-refinery.com>

//Mauve is free software; you can redistribute it and/or modify
//it under the terms of the GNU General Public License as published by
//the Free Software Foundation; either version 2, or (at your option)
//any later version.

//Mauve is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//GNU General Public License for more details.

//You should have received a copy of the GNU General Public License
//along with Mauve; see the file COPYING.  If not, write to
//the Free Software Foundation, 59 Temple Place - Suite 330,
//Boston, MA 02111-1307, USA.  */

package gnu.testlet.java.awt.image.DataBufferUShort;

import gnu.testlet.TestHarness;
import gnu.testlet.Testlet;

import java.awt.image.DataBuffer;
import java.awt.image.DataBufferUShort;

/**
 * Some tests for the constructors in the {@link DataBufferUShort} class.
 */
public class constructors implements Testlet 
{

  /**
   * Runs the test using the specified harness.
   * 
   * @param harness  the test harness (<code>null</code> not permitted).
   */
  public void test(TestHarness harness)      
  {
    testConstructor1(harness);
    testConstructor2(harness);
    testConstructor3(harness);
    testConstructor4(harness);
    testConstructor5(harness);
    testConstructor6(harness);
  }

  private void testConstructor1(TestHarness harness) 
  {
    harness.checkPoint("DataBufferUShort(int)");
    DataBufferUShort b1 = new DataBufferUShort(1);
    harness.check(b1.getDataType() == DataBuffer.TYPE_USHORT);
    harness.check(b1.getSize() == 1);
    harness.check(b1.getNumBanks() == 1);
    harness.check(b1.getOffset() == 0);

    DataBufferUShort b2 = new DataBufferUShort(0);
    harness.check(b2.getSize() == 0);
    harness.check(b2.getNumBanks() == 1);
    harness.check(b2.getOffset() == 0);

   boolean pass = false;
    try 
    {
        DataBufferUShort b3 = new DataBufferUShort(-1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass); 
  }

  private void testConstructor2(TestHarness harness)  
  {
    harness.checkPoint("DataBufferShort(short[][], int)");
    short[][] source = new short[][] {{1, 2}};
    DataBufferUShort b = new DataBufferUShort(source, 1);
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // does a change to the source array affect the buffer? yes
    short[][] banks = b.getBankData();
    harness.check(banks[0][0] == 1);
    source[0][0] = 3;
    harness.check(banks[0][0] == 3);

    // check null source
    boolean pass = false;
    try 
    {
        DataBufferUShort b1 = new DataBufferUShort((short[][]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // check negative size
    DataBufferUShort b1 = new DataBufferUShort(source, -1);
    harness.check(b1.getSize() == -1);
  }

  private void testConstructor3(TestHarness harness)   
  {
    harness.checkPoint("DataBufferUShort(short[][], int, int[])");
    short[][] source = new short[][] {{1, 2}};
    DataBufferUShort b = new DataBufferUShort(source, 1, new int[] {0});
    harness.check(b.getSize() == 1);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // test where offsets are specified
    source = new short[][] {{1, 2, 3}, {4, 5, 6, 7}};
    b = new DataBufferUShort(source, 2, new int[] {0, 1});
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 2);
    harness.check(b.getOffsets()[1] == 1);
    harness.check(b.getElem(1, 0) == 5);

    boolean pass = false;
    try 
    {
      DataBufferUShort b1 = new DataBufferUShort((short[][]) null, 1, new int[] {0});
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    pass = false;
    try 
    {
       DataBufferUShort b1 = new DataBufferUShort(new short[][]{{1, 2}}, 1, (int[]) null);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    pass = false;
    try
    {
      DataBufferUShort b2 = new DataBufferUShort(new short[][]{{1, 2}}, 1, new int[] {0, 0});
    }
    catch (ArrayIndexOutOfBoundsException e)
    {
      pass = true;
    }
    harness.check(pass);

  }

  private void testConstructor4(TestHarness harness)  
  {
    harness.checkPoint("DataBufferUShort(short[], int)");
    DataBufferUShort b = new DataBufferUShort(new short[] {1, 2}, 2);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0); 
 
    // this constructor, unlike all the other DataBuffer classes, rejects
    // a null bank
    boolean pass = false;
    try 
    {
      DataBufferUShort b1 = new DataBufferUShort((short[]) null, 1);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

  private void testConstructor5(TestHarness harness) 
  {
    harness.checkPoint("DataBufferUShort(short[], int, int)");
    DataBufferUShort b = new DataBufferUShort(new short[] {1, 2}, 2, 0);
    harness.check(b.getSize() == 2);
    harness.check(b.getNumBanks() == 1);
    harness.check(b.getOffset() == 0);

    // this constructor, unlike all the other DataBuffer classes, rejects
    // a null bank
    boolean pass = false;
    try 
    {
      DataBufferUShort b1 = new DataBufferUShort((short[]) null, 1, 0);
    }
    catch (NullPointerException e) 
    {
      pass = true;
    }
    harness.check(pass);

    // does negative size fail? no
    pass = true;
    try 
    {
      DataBuffer b1 = new DataBufferUShort(new short[] {1, 2}, -1, 0);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = false;
    }
    harness.check(pass);  
  }

  private void testConstructor6(TestHarness harness) 
  {
    harness.checkPoint("DataBufferUShort(int, int)");
    DataBufferUShort b = new DataBufferUShort(2, 3);
    harness.check(b.getNumBanks() == 3);
    harness.check(b.getSize() == 2);
    harness.check(b.getOffset() == 0);

    // does negative size fail? yes
    boolean pass = false;
    try 
    {
      DataBufferUShort b1 = new DataBufferUShort(-1, 1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    } 
    harness.check(pass);

    // does negative banks fail? yes
    pass = false;
    try 
    {
      DataBufferUShort b1 = new DataBufferUShort(1, -1);
    }
    catch (NegativeArraySizeException e) 
    {
      pass = true;
    }
    harness.check(pass);
  }

}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]