* Patch: FYI: TestJPEGImageWriteParam
@ 2006-04-04 0:53 Thomas Fitzsimmons
0 siblings, 0 replies; only message in thread
From: Thomas Fitzsimmons @ 2006-04-04 0:53 UTC (permalink / raw)
To: mauve-patches
[-- Attachment #1: Type: text/plain, Size: 186 bytes --]
Hi,
I committed TestJPEGImageWriteParam.
Tom
2006-04-03 Thomas Fitzsimmons <fitzsim@redhat.com>
* gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java:
New test.
[-- Attachment #2: mauve-jpeg-image-write-param.patch --]
[-- Type: text/x-patch, Size: 8423 bytes --]
Index: gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java
===================================================================
RCS file: gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java
diff -N gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/javax/imageio/plugins/jpeg/TestJPEGImageWriteParam.java 4 Apr 2006 00:51:14 -0000
@@ -0,0 +1,240 @@
+// Tags: JDK1.4
+
+// Copyright (C) 2006 Red Hat
+
+// 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, 59 Temple Place - Suite 330,
+// Boston, MA 02111-1307, USA.
+
+package gnu.testlet.javax.imageio.plugins.jpeg;
+
+import gnu.testlet.Testlet;
+import gnu.testlet.TestHarness;
+
+import java.util.Arrays;
+import java.util.Locale;
+import javax.imageio.ImageWriteParam;
+import javax.imageio.plugins.jpeg.JPEGHuffmanTable;
+import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
+import javax.imageio.plugins.jpeg.JPEGQTable;
+
+/**
+ * Test JPEGImageWriteParam.
+ */
+public class TestJPEGImageWriteParam implements Testlet
+{
+ public void test(TestHarness harness)
+ {
+ // use the english locale so that we know what string to expect
+ // for descriptions
+ JPEGImageWriteParam param = new JPEGImageWriteParam(Locale.ENGLISH);
+
+ // valid data for testing.
+
+ JPEGQTable[] qTables = new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance
+ };
+
+ JPEGHuffmanTable[] DCHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance,
+ JPEGHuffmanTable.StdDCChrominance
+ };
+
+ JPEGHuffmanTable[] ACHuffmanTables = new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdACLuminance,
+ JPEGHuffmanTable.StdACChrominance
+ };
+
+ // check that tables are not set after construction
+ harness.check(!param.areTablesSet());
+
+ // check that optimize is false after construction
+ harness.check(!param.getOptimizeHuffmanTables());
+
+ // check that returned tables are null
+ harness.check(param.getQTables() == null);
+ harness.check(param.getDCHuffmanTables() == null);
+ harness.check(param.getACHuffmanTables() == null);
+
+ // check that tiling is not supported
+ harness.check(!param.canWriteTiles());
+
+ // check that progressive encoding is supported
+ harness.check(param.canWriteProgressive());
+
+ // check the default progressive mode
+ harness.check(param.getProgressiveMode() == ImageWriteParam.MODE_DISABLED);
+
+ // check that compression is supported
+ harness.check(param.canWriteCompressed());
+
+ // check that a single compression type is supported
+ harness.check(param.getCompressionTypes().length == 1);
+
+ // check that the single compression type is called "JPEG"
+ harness.check(param.getCompressionTypes()[0].equals("JPEG"));
+
+ // set explicit compression mode so that compression mode tests
+ // will work
+ param.setCompressionMode(ImageWriteParam.MODE_EXPLICIT);
+
+ // check that default compression type is "JPEG"
+ harness.check(param.getCompressionType().equals("JPEG"));
+
+ // check that the default compression quality is 0.75f
+ harness.check(param.getCompressionQuality() == 0.75f);
+
+ // check that compression is not lossless
+ harness.check(!param.isCompressionLossless());
+
+ // check compression descriptions
+ String[] descriptions = param.getCompressionQualityDescriptions();
+ harness.check(descriptions.length == 3);
+ String[] expectedDescriptions =
+ {
+ "Minimum useful",
+ "Visually lossless",
+ "Maximum useful"
+ };
+ harness.check(Arrays.equals(descriptions, expectedDescriptions));
+
+ // check compression quality values
+ float[] values = param.getCompressionQualityValues();
+ // Sun's API docs say that the length of the quality values array
+ // will always be one greater than the length of the descriptions
+ // array but testing shows the the lengths to be equal for
+ // JPEGImageWriteParam. This implies that rather than specifying
+ // quality value interval endpoints, the returned array specifies
+ // actual quality values, each of which correspond directly to a
+ // quality description.
+ harness.check(values.length == descriptions.length);
+ float[] expectedValues = { 0.05f, 0.75f, 0.95f };
+ harness.check(Arrays.equals(values, expectedValues));
+
+ // check setting optimize
+ param.setOptimizeHuffmanTables(true);
+ harness.check(param.getOptimizeHuffmanTables());
+
+ // check clearing optimize
+ param.setOptimizeHuffmanTables(false);
+ harness.check(!param.getOptimizeHuffmanTables());
+
+ // check setting compression quality
+ param.setCompressionQuality(0.31f);
+ harness.check(param.getCompressionQuality() == 0.31f);
+
+ // check that clearing compression quality resets to 0.75f
+ param.unsetCompression();
+ harness.check(param.getCompressionQuality() == 0.75f);
+
+ // check failure modes for table setting
+ // null argument
+ boolean settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, null, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // invalid length for an array argument
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(new JPEGQTable[]
+ {
+ JPEGQTable.K1Luminance,
+ JPEGQTable.K1Div2Luminance,
+ JPEGQTable.K2Chrominance,
+ JPEGQTable.K2Div2Chrominance,
+ JPEGQTable.K1Luminance
+ }, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // differing lengths for Huffman table array arguments
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, new JPEGHuffmanTable[]
+ {
+ JPEGHuffmanTable.StdDCLuminance
+ }, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(settingFailed);
+
+ // check valid setting
+ settingFailed = false;
+ try
+ {
+ param.setEncodeTables(qTables, DCHuffmanTables, ACHuffmanTables);
+ }
+ catch (IllegalArgumentException e)
+ {
+ settingFailed = true;
+ }
+ harness.check(!settingFailed);
+
+ // check tables set
+ harness.check(param.areTablesSet());
+
+ // check getting tables
+ JPEGQTable[] gotQTables = param.getQTables();
+ harness.check(gotQTables != null);
+ harness.check(Arrays.equals(qTables, gotQTables));
+
+ JPEGHuffmanTable[] gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables != null);
+ harness.check(Arrays.equals(DCHuffmanTables, gotDCHuffmanTables));
+
+ JPEGHuffmanTable[] gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables != null);
+ harness.check(Arrays.equals(ACHuffmanTables, gotACHuffmanTables));
+
+ // check clearing tables
+ param.unsetEncodeTables();
+
+ // check getting null tables
+ gotQTables = param.getQTables();
+ harness.check(gotQTables == null);
+
+ gotDCHuffmanTables = param.getDCHuffmanTables();
+ harness.check(gotDCHuffmanTables == null);
+
+ gotACHuffmanTables = param.getACHuffmanTables();
+ harness.check(gotACHuffmanTables == null);
+
+ // check that areTablesSet returns false
+ harness.check(!param.areTablesSet());
+ }
+}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2006-04-04 0:53 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2006-04-04 0:53 Patch: FYI: TestJPEGImageWriteParam Thomas Fitzsimmons
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).