This is the mail archive of the mauve-patches@sourceware.org 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]

FYI: Raster child checks


Hi,

This patch adds a check to Raster.createChild, clarifying whether it
returns a Raster or WritableRaster.

Cheers,
Francis


2006-11-27  Francis Kung  <fkung@redhat.com>

	* gnu/testlet/java/awt/image/Raster/createChild.java
	(createRaster): Add harness parameter, ensure that returned raster
	is not writable.
	(testData): Add check for class of child raster.
	* gnu/testlet/java/awt/image/Raster/MyRaster.java: New file.
	* gnu/testlet/java/awt/image/WritableRaster/createChild.java: New file.


Index: gnu/testlet/java/awt/image/Raster/createChild.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/image/Raster/createChild.java,v
retrieving revision 1.1
diff -u -r1.1 createChild.java
--- gnu/testlet/java/awt/image/Raster/createChild.java	17 Oct 2006 14:48:09 -0000	1.1
+++ gnu/testlet/java/awt/image/Raster/createChild.java	27 Nov 2006 21:43:28 -0000
@@ -45,10 +45,11 @@
   
   private void testData(TestHarness harness)
   {
-    Raster rst = createRaster();
+    Raster rst = createRaster(harness);
     
     // Child raster
     Raster rst2 = rst.createChild(10, 20, 25, 15, 0, 0, null);
+    harness.check(!(rst2 instanceof WritableRaster));
     harness.check(rst2.getMinX(), 0);
     harness.check(rst2.getMinY(), 0);
     harness.check(rst2.getWidth(), 25);
@@ -74,7 +75,7 @@
   
   private void testBounds(TestHarness harness)
   {
-    Raster rst = createRaster();
+    Raster rst = createRaster(harness);
 
     // Width and height out of bounds
     try
@@ -113,7 +114,7 @@
   
   private void testBands(TestHarness harness)
   {
-    Raster rst = createRaster();
+    Raster rst = createRaster(harness);
     
     // Copy all bands
     Raster rst2 = rst.createChild(0, 0, 50, 40, 0, 0, null);
@@ -153,7 +154,7 @@
         }
   }
   
-  private Raster createRaster()
+  private Raster createRaster(TestHarness harness)
   {
     // Create initial raster
     WritableRaster rst = Raster.createWritableRaster(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
@@ -167,8 +168,11 @@
         for (int b = 0; b < 3; b++)
           rst.setSample(x, y, b, x+y+b);
     
-    // Get non-writable child 
-    Raster rst2 = rst.createChild(0, 0, 50, 40, 0, 0, null);
+    // Get non-writable version with the same data
+    Raster rst2 = new MyRaster(rst.getSampleModel(),
+                               rst.getDataBuffer(),
+                               new Point(0, 0));
+    harness.check(!(rst2 instanceof WritableRaster));
     return rst2;
   }
 }
Index: gnu/testlet/java/awt/image/Raster/MyRaster.java
===================================================================
RCS file: gnu/testlet/java/awt/image/Raster/MyRaster.java
diff -N gnu/testlet/java/awt/image/Raster/MyRaster.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/awt/image/Raster/MyRaster.java	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,34 @@
+// Tags: not-a-test
+
+// Copyright (C) 2006 Francis Kung <fkung@redhat.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, Inc., 51 Franklin Street, Fifth Floor, 
+// Boston, MA 02110-1301 USA.
+
+package gnu.testlet.java.awt.image.Raster;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.SampleModel;
+
+public class MyRaster
+    extends Raster
+{
+  public MyRaster(SampleModel sm, DataBuffer db, Point origin)
+  {
+    super(sm, db, origin);
+  }
+}
Index: gnu/testlet/java/awt/image/WritableRaster/createChild.java
===================================================================
RCS file: gnu/testlet/java/awt/image/WritableRaster/createChild.java
diff -N gnu/testlet/java/awt/image/WritableRaster/createChild.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/awt/image/WritableRaster/createChild.java	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,173 @@
+/* createChild.java -- some checks for the createChild() method
+       in the WritableRaster class.
+   Copyright (C) 2006 Francis Kung <fkung@redhat.com>
+This file is part of Mauve.
+
+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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+*/
+
+// Tags: JDK1.4
+
+package gnu.testlet.java.awt.image.WritableRaster;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.awt.Point;
+import java.awt.image.DataBuffer;
+import java.awt.image.Raster;
+import java.awt.image.RasterFormatException;
+import java.awt.image.SinglePixelPackedSampleModel;
+import java.awt.image.WritableRaster;
+
+public class createChild implements Testlet 
+{
+  public void test(TestHarness harness)
+  {
+    testData(harness);
+    testBounds(harness);
+    testBands(harness);
+  }
+  
+  private void testData(TestHarness harness)
+  {
+    Raster rst = createRaster(harness);
+    
+    // Child raster
+    Raster rst2 = rst.createChild(10, 20, 25, 15, 0, 0, null);
+    harness.check(rst2 instanceof WritableRaster);
+    harness.check(rst2.getMinX(), 0);
+    harness.check(rst2.getMinY(), 0);
+    harness.check(rst2.getWidth(), 25);
+    harness.check(rst2.getHeight(), 15);
+    
+    for (int x = 0; x < 25; x++)
+      for (int y = 0; y < 15; y++)
+        for (int b = 0; b < 3; b++)
+          harness.check(rst2.getSample(x, y, b), x+10 + y+20 + b);
+    
+    // Offset child
+    rst2 = rst.createChild(10, 20, 25, 15, 30, 40, null);
+    harness.check(rst2.getMinX(), 30);
+    harness.check(rst2.getMinY(), 40);
+    harness.check(rst2.getWidth(), 25);
+    harness.check(rst2.getHeight(), 15);
+    
+    for (int x = 30; x < 55; x++)
+      for (int y = 40; y < 55; y++)
+        for (int b = 0; b < 3; b++)
+          harness.check(rst2.getSample(x, y, b), x-20 + y-20 + b);
+  }
+  
+  private void testBounds(TestHarness harness)
+  {
+    Raster rst = createRaster(harness);
+
+    // Width and height out of bounds
+    try
+    {
+      rst.createChild(10, 20, 100, 100, 0, 0, null);
+      harness.check(false);
+    }
+    catch (RasterFormatException ex)
+    {
+      harness.check(true);
+    }
+    catch (Exception ex)
+    {
+      harness.check(false);
+    }
+    
+    // MinX and MinY out of bounds
+    try
+    {
+      // Create child with non-zero minX and minY
+      Raster rst2 = rst.createChild(0, 0, 25, 25, 30, 30, null);
+      
+      // Create child's child with minX and minY out of bounds
+      rst2.createChild(10, 20, 10, 10, 0, 0, null);
+      harness.check(false);
+    }
+    catch (RasterFormatException ex)
+    {
+      harness.check(true);
+    }
+    catch (Exception ex)
+    {
+      harness.check(false);
+    }
+  }
+  
+  private void testBands(TestHarness harness)
+  {
+    Raster rst = createRaster(harness);
+    
+    // Copy all bands
+    Raster rst2 = rst.createChild(0, 0, 50, 40, 0, 0, null);
+    harness.check(rst2.getNumBands(), rst.getNumBands());
+    
+    // Only first two bands
+    rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{0, 1});
+    harness.check(rst2.getNumBands(), 2);
+    for (int x = 0; x < 50; x++)
+      for (int y = 0; y < 40; y++)
+        for (int b = 0; b < 2; b++)
+          harness.check(rst2.getSample(x, y, b), x+y+b);
+    
+    // Only last two bands
+    rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1, 2});
+    harness.check(rst2.getNumBands(), 2);
+    for (int x = 0; x < 50; x++)
+      for (int y = 0; y < 40; y++)
+        for (int b = 0; b < 2; b++)
+          harness.check(rst2.getSample(x, y, b), x+y+b+1);
+
+    // Only middle band
+    rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{1});
+    harness.check(rst2.getNumBands(), 1);
+    for (int x = 0; x < 50; x++)
+      for (int y = 0; y < 40; y++)
+        harness.check(rst2.getSample(x, y, 0), x+y+1);
+    
+    // Reverse order of bands
+    rst2 = rst.createChild(0, 0, 50, 40, 0, 0, new int[]{2, 0});
+    harness.check(rst2.getNumBands(), 2);
+    for (int x = 0; x < 50; x++)
+      for (int y = 0; y < 40; y++)
+        {        
+          harness.check(rst2.getSample(x, y, 0), x+y+2);
+          harness.check(rst2.getSample(x, y, 1), x+y);
+        }
+  }
+  
+  private Raster createRaster(TestHarness harness)
+  {
+    // Create initial raster
+    WritableRaster rst = Raster.createWritableRaster(new SinglePixelPackedSampleModel(DataBuffer.TYPE_INT,
+                                                                                      50, 40,
+                                                                                      new int[]{0xff0000, 0xff00, 0xff}),
+                                                     new Point(0, 0));
+
+    // Fill with test data
+    for (int x = 0; x < 50; x++)
+      for (int y = 0; y < 40; y++)
+        for (int b = 0; b < 3; b++)
+          rst.setSample(x, y, b, x+y+b);
+    
+    return rst;
+  }
+}

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