public inbox for mauve-patches@sourceware.org
 help / color / mirror / Atom feed
* FYI: Tests for java.util.Scanner
@ 2008-09-01 22:23 Andrew John Hughes
  0 siblings, 0 replies; only message in thread
From: Andrew John Hughes @ 2008-09-01 22:23 UTC (permalink / raw)
  To: mauve-patches

[-- Attachment #1: Type: text/plain, Size: 2350 bytes --]

This patch adds the tests submitted by Laszlo with his
Scanner implementation to Mauve.  All now pass with IcedTea6.

ChangeLog:

2008-09-01  Andrew John Hughes  <gnu_andrew@member.fsf.org>

	* gnu/testlet/java/util/Scanner/Base.java,
	* gnu/testlet/java/util/Scanner/BigDecimalInteger.java,
	* gnu/testlet/java/util/Scanner/Booleans.java,
	* gnu/testlet/java/util/Scanner/DoubleFloat.java,
	* gnu/testlet/java/util/Scanner/FileInput.java,
	* gnu/testlet/java/util/Scanner/FindPattern.java,
	* gnu/testlet/java/util/Scanner/FindWithinHorizon.java,
	* gnu/testlet/java/util/Scanner/FishString.java,
	* gnu/testlet/java/util/Scanner/Inputs.java,
	* gnu/testlet/java/util/Scanner/LotsOfInts.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMInts.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMLong.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMShort.java,
	* gnu/testlet/java/util/Scanner/MultiLine.java:
	Added headers, replaced MyScanner with Scanner,
	fixed location of temporary files, general formatting
	and naming cleanup.
	* gnu/testlet/java/util/Scanner/Radix.java,
	* gnu/testlet/java/util/Scanner/SkipPattern.java:
	Likewise, and converted to use harness.check instead
	of harness.fail.

2007-07-25  Laszlo Andras Hernadi  <e0327023@student.tuwien.ac.at>

	* gnu/testlet/java/util/Scanner/Base.java,
	* gnu/testlet/java/util/Scanner/BigDecimalInteger.java,
	* gnu/testlet/java/util/Scanner/Booleans.java,
	* gnu/testlet/java/util/Scanner/DoubleFloat.java,
	* gnu/testlet/java/util/Scanner/FileInput.java,
	* gnu/testlet/java/util/Scanner/FindPattern.java,
	* gnu/testlet/java/util/Scanner/FindWithinHorizon.java,
	* gnu/testlet/java/util/Scanner/FishString.java,
	* gnu/testlet/java/util/Scanner/Inputs.java,
	* gnu/testlet/java/util/Scanner/LotsOfInts.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMInts.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMLong.java,
	* gnu/testlet/java/util/Scanner/LotsOfPMShort.java,
	* gnu/testlet/java/util/Scanner/MultiLine.java,
	* gnu/testlet/java/util/Scanner/Radix.java,
	* gnu/testlet/java/util/Scanner/SkipPattern.java:
	New tests for java.util.Scanner.

-- 
Andrew :)

Support Free Java!
Contribute to GNU Classpath and the OpenJDK
http://www.gnu.org/software/classpath
http://openjdk.java.net
PGP Key: 94EFD9D8 (http://subkeys.pgp.net)
Fingerprint = F8EF F1EA 401E 2E60 15FA  7927 142C 2591 94EF D9D8

[-- Attachment #2: scanner.diff --]
[-- Type: text/plain, Size: 49255 bytes --]

Index: gnu/testlet/java/util/Scanner/Base.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/Base.java
diff -N gnu/testlet/java/util/Scanner/Base.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/Base.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,81 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: not-a-test
+
+package gnu.testlet.java.util.Scanner;
+
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
+import java.io.File;
+
+/**
+ * @author E0327023 Hernadi Laszlo @ 14.02.2007 - 12:13:06
+ */
+public abstract class Base implements Testlet
+{
+  protected TestHarness myHarness = null;
+
+  protected final boolean doCleanUP = false;
+
+  protected String fileName = null;
+
+  protected File aktFile;
+
+  protected boolean isEnabled = true;
+  protected boolean forceAll = true;
+
+  public void test (final TestHarness harness)
+  {
+    if (!isEnabled && !forceAll)
+      {
+	System.out.println ("\t\tTest Disabled...");
+	return;
+      }
+
+    this.myHarness = harness;
+    if (this.fileName != null)
+      {
+	this.aktFile = new File (myHarness.getTempDirectory() +
+				 myHarness.getSeparator() +
+				 this.fileName);
+	myHarness.debug("Using file: " + aktFile.toString());
+	if (this.doCleanUP)
+	  {
+	    this.aktFile.deleteOnExit ();
+	  }
+      }
+    try
+    {
+      doTest ();
+    }
+    catch (Throwable e)
+    {
+      e.printStackTrace ();
+    }
+  }
+
+  protected void setDefaultFilename ()
+  {
+    this.fileName = this.getClass ().getName () + ".txt";
+  }
+
+  protected abstract void doTest ();
+}
Index: gnu/testlet/java/util/Scanner/BigDecimalInteger.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/BigDecimalInteger.java
diff -N gnu/testlet/java/util/Scanner/BigDecimalInteger.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/BigDecimalInteger.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,150 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.math.BigDecimal;
+import java.math.BigInteger;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 13:37:48
+ *
+ */
+public class BigDecimalInteger extends Base
+{
+
+  /**
+   * The amount of BigDecimals and BigIntegers to generate and test
+   */
+  private final static int AMOUNT = 5000;
+
+  public BigDecimalInteger ()
+  {
+    this.isEnabled = false;
+  }
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    BigDecimal[]decimals = new BigDecimal[AMOUNT];
+    BigInteger[]integers = new BigInteger[decimals.length];
+    long runID = System.currentTimeMillis ();
+    Random rand = new Random (runID);
+    StringBuilder sBuff = new StringBuilder (1000);
+    String inStr;
+    int i;
+    BigDecimal tmpDec;
+    BigInteger tmpInt;
+    boolean fund;
+    boolean failed;
+    int runsLeft = 10;
+
+    for (i = 0; i < decimals.length; i++)
+      {
+	decimals[i] = new BigDecimal (rand.nextDouble () - 0.5);
+	integers[i] = BigInteger.valueOf (rand.nextInt ());
+//                      if (i % 100 == 0)
+//                              System.out.println(i);
+      }
+
+    sBuff.append (decimals[0] + " " + integers[0]);
+    for (i = 1; i < decimals.length; i++)
+      {
+	sBuff.append (" " + decimals[i] + " " + integers[i]);
+//                      if (i % 100 == 0)
+//                              System.out.println(i);
+      }
+
+    inStr = sBuff.toString ();
+//              Scanner s = new Scanner (inStr);
+    Scanner s = new Scanner (inStr);
+    //s.setUseLocale (false);
+//              System.out.println(inStr);
+
+//              System.out.println("len : " + inStr.length());
+
+    i = 0;
+    while (s.hasNext () && runsLeft > 0)
+      {
+	fund = false;
+	failed = false;
+	if (s.hasNextBigDecimal ())
+	  {
+	    tmpDec = s.nextBigDecimal ();
+	    if (!tmpDec.equals (decimals[i]))
+	      {
+		failed = true;
+		this.myHarness.fail ("#" + i +
+				     " : bad result by nextBigDeciaml() : (" +
+				     tmpDec + " != " + decimals[i] +
+				     ") possibly needed : \"" + s.next () +
+				     "\"");
+	      }
+	    fund = true;
+	  }
+	else
+	  {
+	    this.myHarness.fail ("no BigDecimal found...");
+	  }
+	if (s.hasNextBigInteger ())
+	  {
+	    tmpInt = s.nextBigInteger ();
+	    if (!tmpInt.equals (integers[i]))
+	      {
+		failed = true;
+		this.myHarness.fail ("#" + i +
+				     " : bad result by nextBigInteger() : " +
+				     tmpInt + " != " + integers[i]);
+	      }
+	    fund = true;
+	  }
+	else
+	  {
+	    this.myHarness.fail ("no BigInteger found...");
+	  }
+
+//                      if (i % 100 == 0)
+//                              System.out.println(i);
+	if (!fund)
+	  {
+	    this.myHarness.fail ("\"" + s.next () +
+				 "\" is neighter BigDecimal nor BigInteger");
+	  }
+	i++;
+	if (failed)
+	  {
+	    runsLeft--;
+	  }
+      }
+    this.myHarness.check (i, decimals.length,
+			  "not all read (" + i + " / " + decimals.length +
+			  ")");
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/Booleans.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/Booleans.java
diff -N gnu/testlet/java/util/Scanner/Booleans.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/Booleans.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,83 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 13:10:31
+ *
+ */
+public class Booleans extends Base
+{
+	/**
+	 * The amount of booleans to generate and test.
+	 */
+  private final static int AMOUNT = 100;
+
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    boolean[]values = new boolean[AMOUNT];
+    boolean hasNext;
+    boolean aktValue;
+    String inStr;
+    int i;
+    Random rand = new Random (System.currentTimeMillis ());
+
+    for (i = 0; i < values.length; i++)
+      {
+	values[i] = rand.nextBoolean ();
+      }
+    inStr = "" + values[0];
+
+    for (i = 1; i < values.length; i++)
+      {
+	inStr += " " + values[i];
+      }
+
+    Scanner s = new Scanner (inStr);
+    i = 0;
+    hasNext = s.hasNextBoolean ();
+    while (hasNext)
+      {
+	aktValue = s.nextBoolean ();
+	this.myHarness.check (aktValue, values[i],
+			      "nextBoolean() is wrong : " + aktValue +
+			      " != " + values[i]);
+	i++;
+	hasNext = s.hasNextBoolean ();
+      }
+    this.myHarness.check (i, values.length,
+			  "not all values (" + i + " / " + values.length +
+			  ")");
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/DoubleFloat.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/DoubleFloat.java
diff -N gnu/testlet/java/util/Scanner/DoubleFloat.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/DoubleFloat.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,117 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 15.02.2007 - 21:06:41
+ *
+ */
+public class DoubleFloat extends Base
+{
+	/**
+	 * The amount of doubles and floats to generate and test.
+	 */
+  private final static int AMOUNT = 10000;
+
+
+  public DoubleFloat ()
+  {
+    this.isEnabled = false;
+  }
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    double[] doubleZ = new double[AMOUNT];
+    float[] floatZ = new float[doubleZ.length];
+    long runID = System.currentTimeMillis ();
+    Random rand = new Random (runID);
+    int i;
+    StringBuffer tmpStr = new StringBuffer (1000);
+    String inStr;
+
+    double aktDouble;
+    float aktFloat;
+
+    for (i = 0; i < doubleZ.length; i++)
+      {
+	doubleZ[i] = rand.nextDouble () - 0.5d;
+	floatZ[i] = rand.nextFloat () - 0.5f;
+      }
+
+    tmpStr.append (doubleZ[0] + " " + floatZ[0]);
+    for (i = 1; i < doubleZ.length; i++)
+      {
+	tmpStr.append (" " + doubleZ[i] + " " + floatZ[i]);
+      }
+
+    inStr = tmpStr.toString ();
+    Scanner s = new Scanner (inStr);
+    //s.setUseLocale (false);
+//              Scanner s = new Scanner(inStr);
+
+    i = 0;
+    while (s.hasNext () && i < doubleZ.length)
+      {
+	if (s.hasNextDouble ())
+	  {
+	    aktDouble = s.nextDouble ();
+	    this.myHarness.check (aktDouble, doubleZ[i],
+				  "#" + i + " : bad nextDouble() (" +
+				  aktDouble + " != " + doubleZ[i]);
+	  }
+	else
+	  {
+	    this.myHarness.fail ("#" + i + " : not double... (" + s.next () +
+				 ")");
+	  }
+	if (s.hasNextFloat ())
+	  {
+	    aktFloat = s.nextFloat ();
+	    this.myHarness.check (aktFloat, floatZ[i],
+				  "#" + i + " : bad nextFloat() (" +
+				  aktFloat + " != " + floatZ[i]);
+	  }
+	else
+	  {
+	    this.myHarness.fail ("#" + i + " : not float... (" + s.next () +
+				 ")");
+	  }
+	i++;
+      }
+
+    if (i != doubleZ.length)
+      {
+	this.myHarness.fail ("not all (" + i + " / " + doubleZ.length);
+      }
+
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/FileInput.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/FileInput.java
diff -N gnu/testlet/java/util/Scanner/FileInput.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/FileInput.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,100 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 14.02.2007 - 12:20:18
+ *
+ */
+public class FileInput extends Base
+{
+  public FileInput ()
+  {
+    setDefaultFilename ();
+  }
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+   @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("File Input");
+
+    String[]testWords =
+    {
+    "This", "is", "a", "simple", "Test", "don't", "panik", "it's", "just",
+	"a", "Teset"};
+    testWords[0] = testWords[0].trim ();
+    String testString = testWords[0];
+    String tmpStr;
+    int i;
+
+    for (i = 1; i < testWords.length; i++)
+      {
+	testWords[i] = testWords[i].trim ();
+	testString += " " + testWords[i].trim ();
+      }
+
+    try
+    {
+      FileOutputStream fos = new FileOutputStream (this.aktFile);
+      fos.write (testString.getBytes ());
+      fos.flush ();
+      fos.close ();
+      Scanner s = new Scanner (aktFile);
+      i = 0;
+      while (s.hasNext ())
+	{
+	  tmpStr = s.next ();
+	  this.myHarness.check (tmpStr, testWords[i],
+				"next() -> \"" + tmpStr + "\" != \"" +
+				testWords[i] + "\"");
+	  // System.out.println("\"" + tmpStr + "\" ?= \"" + testWords[i] + "\"");
+	  i++;
+	}
+      this.myHarness.check (i, testWords.length,
+			    "Incomplete read... (" + i + " / " +
+			    testWords.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/FindPattern.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/FindPattern.java
diff -N gnu/testlet/java/util/Scanner/FindPattern.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/FindPattern.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,70 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 19.02.2007 - 03:16:19
+ *
+ */
+public class FindPattern extends Base
+{
+
+  private static final String FISH_STR = "1 fish 2 fish red fish blue fish ";	//$NON-NLS-1$
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    Scanner s3 = new Scanner (FISH_STR);
+    String pattern1 = "\\d+";	// "(\\d+) fish ";
+    String pattern2 = "\\w+";	// "(\\w+) fish ";
+    String[] patterns =
+      {	null, pattern1, pattern1, pattern2, pattern2};
+    String[]values =
+      { null, "1", "2", "red", "blue"};	// the null is required...
+    String tmpStr;
+    boolean rc;
+    int i;
+
+    i = 1;
+    s3.useDelimiter (" fish ");
+    do
+      {
+	rc = s3.hasNext (patterns[i]);
+	myHarness.check(rc, "Next item doesn't match " + patterns[i]);
+	if (!rc) myHarness.fail("Stopping early; encountered \"" + s3.next() + "\"");
+	tmpStr = s3.next (patterns[i]);
+	myHarness.check(tmpStr, values[i], "wrong result : \"" + tmpStr + "\" != \"" +
+		      values[i] + "\"");
+	i++;
+      }
+    while (rc && i < patterns.length);
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/FindWithinHorizon.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/FindWithinHorizon.java
diff -N gnu/testlet/java/util/Scanner/FindWithinHorizon.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/FindWithinHorizon.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,59 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 24.02.2007 - 20:10:24
+ *
+ */
+public class FindWithinHorizon extends Base
+{
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    String fishString = "1 fish 2 fish red fish blue fish";
+    Scanner s = new Scanner (fishString);
+    String tmpStr = "";
+    int i;
+
+    for (i = 0; i < fishString.length (); i++)
+      {
+	// from : http://www.cs.princeton.edu/introcs/15inout/In.java.html
+	// (?s) for DOTALL mode so . matches any character, including a line termination character
+	// 1 says look only one character ahead
+	// consider precompiling the pattern
+	tmpStr += s.findWithinHorizon ("(?s).", 1);
+      }
+    myHarness.check (tmpStr.equals(fishString), "\"" + tmpStr + "\" == \"" + fishString + "\"");
+    if (s.hasNext ())
+      myHarness.fail ("should not has next...");
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/FishString.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/FishString.java
diff -N gnu/testlet/java/util/Scanner/FishString.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/FishString.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,89 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import gnu.testlet.Testlet;
+
+import java.util.Scanner;
+
+import java.util.regex.MatchResult;
+
+/**
+ * @author E0327023 Hernadi Laszlo @ 12.02.2007 - 23:00:30
+ */
+public class FishString extends Base
+{
+
+  @Override protected void doTest ()
+  {
+    String input = "1 fish 2 fish red fish blue fish";
+    String delimiter = "\\s*fish\\s*";
+    String tmpStr;
+      String[] values =
+    {
+    null, "1", "2", "red", "blue"};	// the null is required...
+    int i;
+
+    this.myHarness.checkPoint ("Fisch String [" + input + "]");
+    Scanner s1 = new Scanner (input);
+    s1.useDelimiter (delimiter);
+    tmpStr = s1.delimiter ().pattern ();
+    this.myHarness.check (tmpStr, delimiter,
+			  "get / setDelimiter fail (\"" + tmpStr +
+			  "\" != \"" + delimiter);
+    this.myHarness.check (s1.hasNext (), true, "first hasNext()");
+    this.myHarness.check (s1.hasNextInt (), true, "first hasNextInt()");
+    this.myHarness.check (s1.nextInt (), 1, "nextInt()");
+    this.myHarness.check (s1.hasNextInt (), true, "hasNextInt()");
+    this.myHarness.check (s1.hasNextBoolean (), false, "hasNextBoolean()");
+    this.myHarness.check (s1.hasNextByte (), true, "hasNextByte()");
+    this.myHarness.check (s1.nextInt (), 2, "2. nextInt()");
+    this.myHarness.check (s1.hasNext (), true, "3. hasNext()");
+    this.myHarness.check (s1.hasNextBigInteger (), false,
+			  "hasNextBigInteger()");
+    this.myHarness.check (s1.next (), "red", "3. next()");
+    this.myHarness.check (s1.next (), "blue", "4. next()");
+    this.myHarness.check (s1.hasNext (), false, "letztes hasNext()");
+    s1.close ();
+
+    // Scanner s2 = new Scanner(input);
+    Scanner s2 = new Scanner (input);
+    s2.findInLine ("(\\d+) fish (\\d+) fish (\\w+) fish (\\w+)");
+    MatchResult mResult = s2.match ();
+    for (i = 1; i <= mResult.groupCount (); i++)
+      {
+	this.myHarness.check (mResult.group (i), values[i],
+			      "wrong result : \"" + mResult.group (i) +
+			      "\" != \"" + values[i] + "\"");
+	// System.out.println(mResult.group(i));
+      }
+    if (i != values.length)
+      {
+	this.myHarness.fail ("not all results... (" + i + " != " +
+			     (values.length) + ")");
+      }
+    s2.close ();
+  }
+}
Index: gnu/testlet/java/util/Scanner/Inputs.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/Inputs.java
diff -N gnu/testlet/java/util/Scanner/Inputs.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/Inputs.java	1 Sep 2008 22:16:11 -0000
@@ -0,0 +1,227 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.ByteArrayInputStream;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 26.02.2007 - 04:15:47
+ *
+ */
+public class Inputs extends Base
+{
+  /**
+   * The amount of long numbers to generate and test.
+   */
+  private final static int AMOUNT = 20000;
+
+  public Inputs ()
+  {
+    fileName = getClass().getName () + ".txt";
+    this.isEnabled = false;
+  }
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    long[] numbers = new long[AMOUNT];
+    Random r = new Random (System.currentTimeMillis ());
+    int i;
+    long tmp;
+    int errors;
+    final long max = 20000000000000L, mean = max >> 1;
+    StringBuffer tmpBuff = new StringBuffer (10000);
+    FileOutputStream fos = null;
+    Scanner s = null;
+
+    String[]charSets = {"windows-1252"};
+    String aktName;
+
+    int aktCS;
+
+    for (i = 0; i < numbers.length; i++)
+      {
+	tmp = ((long) (r.nextFloat () * max) - mean);
+	numbers[i] = tmp;
+      }
+    tmpBuff.insert (0, "" + numbers[0]);
+
+    for (i = 1; i < numbers.length; i++)
+      {
+	tmpBuff.append (" " + numbers[i]);
+      }
+
+    try
+    {
+      fos = new FileOutputStream (this.aktFile);
+      fos.write (tmpBuff.toString ().getBytes ());
+      fos.flush ();
+      fos.close ();
+
+//                      Scanner s = new Scanner (aktFile);
+
+      myHarness.debug ("Testing Readable input...");
+      errors = 0;
+      s = new Scanner (new FileReader (this.aktFile));
+      i = 0;
+      while (s.hasNextLong ())
+	{
+	  tmp = s.nextLong ();
+	  if (tmp != numbers[i])
+	    {
+	      errors++;
+	      this.myHarness.fail ("Readable : nextLong() -> " + tmp +
+				   " != " + numbers[i]);
+	    }
+	  i++;
+	}
+      if (errors == 0)
+	myHarness.debug ("all OK");
+      else
+	this.myHarness.fail (errors + " errors..");
+
+      myHarness.debug ("Testing ReadableByteChanel input...");
+      errors = 0;
+      s = new Scanner ((new FileInputStream (this.aktFile)).getChannel ());
+      i = 0;
+      while (s.hasNextLong ())
+	{
+	  tmp = s.nextLong ();
+	  if (tmp != numbers[i])
+	    {
+	      errors++;
+	      this.myHarness.fail ("ReadableByteChanel : nextLong() -> " +
+				   tmp + " != " + numbers[i]);
+	    }
+	  i++;
+	}
+      if (errors == 0)
+	myHarness.debug ("all OK");
+      else
+	this.myHarness.fail (errors + " errors..");
+
+      for (aktCS = 0; aktCS < charSets.length; aktCS++)
+	{
+	  aktName = "Testing File + CharSet \"" + charSets[aktCS] + "\"";
+	  myHarness.debug (aktName);
+	  errors = 0;
+	  s = new Scanner (this.aktFile, charSets[aktCS]);
+	  i = 0;
+	  while (s.hasNextLong ())
+	    {
+	      tmp = s.nextLong ();
+	      if (tmp != numbers[i])
+		{
+		  errors++;
+		  this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+				       " != " + numbers[i]);
+		}
+	      i++;
+	    }
+	  if (errors == 0)
+	    myHarness.debug ("all OK");
+	  else
+	    this.myHarness.fail (errors + " errors..");
+
+	  aktName =
+	    "Testing InputStream + CharSet \"" + charSets[aktCS] + "\"";
+	  myHarness.debug (aktName);
+	  errors = 0;
+	  s =
+	    new Scanner (new
+			   ByteArrayInputStream (tmpBuff.toString ().
+						 getBytes ()),
+			   charSets[aktCS]);
+	  i = 0;
+	  while (s.hasNextLong ())
+	    {
+	      tmp = s.nextLong ();
+	      if (tmp != numbers[i])
+		{
+		  errors++;
+		  this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+				       " != " + numbers[i]);
+		}
+	      i++;
+	    }
+	  if (errors == 0)
+	    myHarness.debug ("all OK");
+	  else
+	    this.myHarness.fail (errors + " errors..");
+
+	  aktName =
+	    "Testing ReadableByteChanel + CharSet \"" + charSets[aktCS] +
+	    "\"";
+	  myHarness.debug (aktName);
+	  errors = 0;
+	  s =
+	    new Scanner ((new FileInputStream (this.aktFile)).getChannel (),
+			   charSets[aktCS]);
+	  i = 0;
+	  while (s.hasNextLong ())
+	    {
+	      tmp = s.nextLong ();
+	      if (tmp != numbers[i])
+		{
+		  errors++;
+		  this.myHarness.fail (aktName + " : nextLong() -> " + tmp +
+				       " != " + numbers[i]);
+		}
+	      i++;
+	    }
+	  if (errors == 0)
+	    myHarness.debug ("all OK");
+	  else
+	    this.myHarness.fail (errors + " errors..");
+
+	}
+
+      this.myHarness.check (i, numbers.length,
+			    "Incomplete read... (" + i + " / " +
+			    numbers.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/LotsOfInts.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/LotsOfInts.java
diff -N gnu/testlet/java/util/Scanner/LotsOfInts.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/LotsOfInts.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,96 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfInts extends Base
+{
+  public LotsOfInts ()
+  {
+    this.isEnabled = false;
+    this.fileName = this.getClass ().getName () + ".txt";
+  }
+
+  @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("Reading lots of positive ints");
+
+    int[] numbers = new int[100000];
+    Random r = new Random (System.currentTimeMillis ());
+    int i;
+    int tmp;
+    final int max = 1000000;
+    StringBuilder tmpBuff = new StringBuilder (10000);
+    FileOutputStream fos = null;
+
+    for (i = 0; i < numbers.length; i++)
+      {
+	tmp = (int) (r.nextFloat () * max);
+	numbers[i] = tmp;
+      }
+    tmpBuff.insert (0, "" + numbers[0]);
+
+    for (i = 1; i < numbers.length; i++)
+      {
+	tmpBuff.append (" " + numbers[i]);
+      }
+
+    try
+    {
+      fos = new FileOutputStream (this.aktFile);
+      fos.write (tmpBuff.toString ().getBytes ());
+      fos.flush ();
+      fos.close ();
+
+      Scanner s = new Scanner (this.aktFile);
+      i = 0;
+      while (s.hasNextInt ())
+	{
+	  tmp = s.nextInt ();
+	  this.myHarness.check (tmp, numbers[i],
+				"nextInt() -> " + tmp + " != " + numbers[i]);
+	  i++;
+	}
+      this.myHarness.check (i, numbers.length,
+			    "Incomplete read... (" + i + " / " +
+			    numbers.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/LotsOfPMInts.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/LotsOfPMInts.java
diff -N gnu/testlet/java/util/Scanner/LotsOfPMInts.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/LotsOfPMInts.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,98 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMInts extends Base
+{
+  public LotsOfPMInts ()
+  {
+    this.isEnabled = false;
+    setDefaultFilename ();
+  }
+
+   @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("Reading lots of positive ints");
+
+    int[] numbers = new int[100000];
+    long runID = System.currentTimeMillis ();
+    Random rand = new Random (runID);
+    int i;
+    int tmp;
+    final int max = 1000000, mean = max >> 1;
+    StringBuilder tmpBuff = new StringBuilder (10000);
+    FileOutputStream fos = null;
+
+    myHarness.debug ("runID : " + runID);
+
+    for (i = 0; i < numbers.length; i++)
+      {
+	tmp = (int) (rand.nextFloat () * max) - mean;
+	numbers[i] = tmp;
+      }
+    tmpBuff.insert (0, "" + numbers[0]);
+
+    for (i = 1; i < numbers.length; i++)
+      {
+	tmpBuff.append (" " + numbers[i]);
+      }
+
+    try
+    {
+      fos = new FileOutputStream (this.aktFile);
+      fos.write (tmpBuff.toString ().getBytes ());
+      fos.flush ();
+      fos.close ();
+
+      Scanner s = new Scanner (aktFile);
+      i = 0;
+      while (s.hasNextInt ())
+	{
+	  tmp = s.nextInt ();
+	  this.myHarness.check (tmp, numbers[i],
+				"nextInt() -> " + tmp + " != " + numbers[i]);
+	  i++;
+	}
+      this.myHarness.check (i, numbers.length,
+			    "Incomplete read... (" + i + " / " +
+			    numbers.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/LotsOfPMLong.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/LotsOfPMLong.java
diff -N gnu/testlet/java/util/Scanner/LotsOfPMLong.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/LotsOfPMLong.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,97 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMLong extends Base
+{
+  public LotsOfPMLong ()
+  {
+    this.fileName = this.getClass ().getName () + ".txt";
+  }
+
+  @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("Reading lots of shorts");
+
+    long[] numbers = new long[20000];
+    long runID = System.currentTimeMillis ();
+    Random rand = new Random (runID);
+    int i;
+    long tmp;
+    final long max = 20000000000000L, mean = max >> 1;
+    StringBuilder tmpBuff = new StringBuilder (10000);
+    FileOutputStream fos = null;
+
+    myHarness.debug ("runID : " + runID);
+
+    for (i = 0; i < numbers.length; i++)
+      {
+	tmp = ((long) (rand.nextFloat () * max) - mean);
+	numbers[i] = tmp;
+      }
+    tmpBuff.insert (0, "" + numbers[0]);
+
+    for (i = 1; i < numbers.length; i++)
+      {
+	tmpBuff.append (" " + numbers[i]);
+      }
+
+    try
+    {
+      fos = new FileOutputStream (this.aktFile);
+      fos.write (tmpBuff.toString ().getBytes ());
+      fos.flush ();
+      fos.close ();
+
+      Scanner s = new Scanner (aktFile);
+      i = 0;
+      while (s.hasNextLong ())
+	{
+	  tmp = s.nextLong ();
+	  this.myHarness.check (tmp, numbers[i],
+				"nextLong() -> " + tmp + " != " + numbers[i]);
+	  i++;
+	}
+      this.myHarness.check (i, numbers.length,
+			    "Incomplete read... (" + i + " / " +
+			    numbers.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/LotsOfPMShort.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/LotsOfPMShort.java
diff -N gnu/testlet/java/util/Scanner/LotsOfPMShort.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/LotsOfPMShort.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,99 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class LotsOfPMShort extends Base
+{
+  public LotsOfPMShort ()
+  {
+    this.isEnabled = false;
+    this.fileName = this.getClass ().getName () + ".txt";
+  }
+
+  @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("Reading lots of shorts");
+
+    short[] numbers = new short[10000];
+    long runID = System.currentTimeMillis ();
+    Random rand = new Random (runID);
+    int i;
+    short tmp;
+    final short max = 20000, mean = max >> 1;
+    StringBuilder tmpBuff = new StringBuilder (10000);
+    FileOutputStream fos = null;
+    
+    myHarness.debug ("runID : " + runID);
+
+    for (i = 0; i < numbers.length; i++)
+      {
+	tmp = (short) ((short) (rand.nextFloat () * max) - mean);
+	numbers[i] = tmp;
+      }
+    tmpBuff.insert (0, "" + numbers[0]);
+
+    for (i = 1; i < numbers.length; i++)
+      {
+	tmpBuff.append (" " + numbers[i]);
+      }
+
+    try
+    {
+      fos = new FileOutputStream (this.aktFile);
+      fos.write (tmpBuff.toString ().getBytes ());
+      fos.flush ();
+      fos.close ();
+
+      Scanner s = new Scanner (aktFile);
+      i = 0;
+      while (s.hasNextShort ())
+	{
+	  tmp = s.nextShort ();
+	  this.myHarness.check (tmp, numbers[i],
+				"nextShort() -> " + tmp + " != " +
+				numbers[i]);
+	  i++;
+	}
+      this.myHarness.check (i, numbers.length,
+			    "Incomplete read... (" + i + " / " +
+			    numbers.length + ")");
+      s.close ();
+    }
+    catch (FileNotFoundException e)
+    {
+      this.myHarness.fail ("Could not create file");
+    }
+    catch (IOException e)
+    {
+      this.myHarness.fail ("Could not write to File \"" +
+			   this.aktFile.getName () + "\"");
+    }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/MultiLine.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/MultiLine.java
diff -N gnu/testlet/java/util/Scanner/MultiLine.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/MultiLine.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,74 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.io.ByteArrayInputStream;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 14.02.2007 - 12:17:51
+ *
+ */
+public class MultiLine extends Base
+{
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    this.myHarness.checkPoint ("Multi line read - linewise");
+
+    String[] lines =
+    {
+    "1. Line: aaa bbb ccc", "2. line: aaa bbb aaa", "3. line: bbb aaa"};
+    String newLine = System.getProperty ("line.separator");
+    int i;
+    String tmp = lines[0];
+    String result;
+    byte[]buffer;
+
+    for (i = 1; i < lines.length; i++)
+      {
+	tmp += newLine + lines[i];
+      }
+    tmp += newLine;
+    buffer = tmp.getBytes ();
+    ByteArrayInputStream inStr = new ByteArrayInputStream (buffer);
+
+    Scanner s = new Scanner (inStr);
+    for (i = 0; i < lines.length; i++)
+      {
+	this.myHarness.check (s.hasNextLine (), true,
+			      (i + 1) + ". hasNextLine()");
+	result = s.nextLine ();
+	this.myHarness.check (result, lines[i],
+			      (i + 1) + ". nextLine() [" + result + "]");
+      }
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/Radix.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/Radix.java
diff -N gnu/testlet/java/util/Scanner/Radix.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/Radix.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,75 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+/**
+ * 
+ */
+package gnu.testlet.java.util.Scanner;
+
+import java.math.BigInteger;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 26.02.2007 - 05:28:44
+ *
+ */
+public class Radix extends Base
+{
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    String testStr = "5F 7FFF 4F3F3F6F 3F3F2EF3FFEE 4FFAAEEFFAA";
+    Scanner s = new Scanner (testStr);
+
+    myHarness.check(s.hasNextByte (16), "hasNextByte(16)");
+    myHarness.check(s.nextByte(16), 95, "nextByte is 95");
+    myHarness.check(s.hasNextShort(16), "hasNextShort(16)");
+    myHarness.check(s.nextShort(16), 32767, "nextShort is 32767");
+    myHarness.check(s.hasNextInt(16), "hasNextInt(16)");
+    myHarness.check(s.nextInt(16), 1329545071, "nextInt is 1329545071");
+    myHarness.check(s.hasNextLong(16), "hasNextLong(16)");
+    myHarness.check(s.nextLong(16), 69540603232238L, "nextLong is 69540603232238");
+    myHarness.check(s.hasNextBigInteger(16), "hasNextBigInteger(16)");
+    myHarness.check(s.nextBigInteger(16), BigInteger.valueOf(5496130961322L),
+		    "nextBigInteger is 5496130961322");
+
+    s = new Scanner (testStr).useRadix (16);
+    myHarness.check(s.radix(), 16, "radix was not set to 16");
+
+    myHarness.check(s.hasNextByte (), "hasNextByte()");
+    myHarness.check(s.nextByte(), 95, "nextByte is 95");
+    myHarness.check(s.hasNextShort(), "hasNextShort()");
+    myHarness.check(s.nextShort(), 32767, "nextShort is 32767");
+    myHarness.check(s.hasNextInt(), "hasNextInt()");
+    myHarness.check(s.nextInt(), 1329545071, "nextInt is 1329545071");
+    myHarness.check(s.hasNextLong(), "hasNextLong()");
+    myHarness.check(s.nextLong(), 69540603232238L, "nextLong is 69540603232238");
+    myHarness.check(s.hasNextBigInteger(), "hasNextBigInteger()");
+    myHarness.check(s.nextBigInteger(), BigInteger.valueOf(5496130961322L),
+		    "nextBigInteger is 5496130961322");
+
+  }
+
+}
Index: gnu/testlet/java/util/Scanner/SkipPattern.java
===================================================================
RCS file: gnu/testlet/java/util/Scanner/SkipPattern.java
diff -N gnu/testlet/java/util/Scanner/SkipPattern.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ gnu/testlet/java/util/Scanner/SkipPattern.java	1 Sep 2008 22:16:12 -0000
@@ -0,0 +1,55 @@
+// Copyright (c) 2007 Hernadi Laszlo
+
+// 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.
+
+// Tags: JDK1.5
+
+package gnu.testlet.java.util.Scanner;
+
+import java.util.Scanner;
+
+/**
+ * @author E0327023 Hernadi Laszlo
+ * @ 19.02.2007 - 03:16:19
+ *
+ */
+public class SkipPattern extends Base
+{
+
+  private static final String FISH_STR = "1 fish 2 fish red fish blue fish ";	//$NON-NLS-1$
+
+  /* (non-Javadoc)
+   * @see gnu.testlet.java.util.Scanner.TestBase#doTest()
+   */
+  @Override protected void doTest ()
+  {
+    Scanner s = new Scanner(FISH_STR);
+    String[] values = { "1", "2", "red", "blue"};
+    int i;
+    String tmpStr;
+
+    for (i = 0; i < values.length; i++)
+      {
+	tmpStr = s.next ();
+	myHarness.check(tmpStr.equals (values[i]), tmpStr + " = " + values[i]);
+	s = s.skip (" ").skip ("fish");
+      }
+
+  }
+
+}

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2008-09-01 22:23 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-09-01 22:23 FYI: Tests for java.util.Scanner Andrew John Hughes

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).