Thread: [Japi-cvs] SF.net SVN: japi:[696] libs/util/trunk/src
Status: Beta
Brought to you by:
christianhujer
From: <chr...@us...> - 2008-10-07 23:24:35
|
Revision: 696 http://japi.svn.sourceforge.net/japi/?rev=696&view=rev Author: christianhujer Date: 2008-10-07 23:24:28 +0000 (Tue, 07 Oct 2008) Log Message: ----------- Fixed code conventions issues. Added new tests. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/Arrays2.java libs/util/trunk/src/prj/net/sf/japi/util/filter/file/AbstractFileFilter.java libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java libs/util/trunk/src/prj/net/sf/japi/util/filter/file/Factory.java libs/util/trunk/src/prj/net/sf/japi/util/filter/file/FilenameFileFilter.java libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java Added Paths: ----------- libs/util/trunk/src/tst/test/net/sf/japi/util/EnumerationIteratorTest.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/Arrays2.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/Arrays2.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/prj/net/sf/japi/util/Arrays2.java 2008-10-07 23:24:28 UTC (rev 696) @@ -278,8 +278,8 @@ return n; } // eventually add filters for primitive types and provide corresponding methods - /** Searches the specified array of ints for the specified value using the binary search algorithm. - * The array <strong>must</strong> be sorted (as by the <tt>sort</tt> method, above) prior to making this call. + /** Searches the specified array region of ints for the specified value using the binary search algorithm. + * The array region <strong>must</strong> be sorted (as by the <tt>sort</tt> method, above) prior to making this call. * If it is not sorted, the results are undefined (even a runtime exception might occur). * If the array contains multiple elements with the specified value, there is no guarantee which one will be found. * @param a the array to be searched. Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/AbstractFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/AbstractFileFilter.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/AbstractFileFilter.java 2008-10-07 23:24:28 UTC (rev 696) @@ -19,7 +19,7 @@ package net.sf.japi.util.filter.file; -/** A FileFilter that combines several File filtering classes and interfaces. +/** The AbstractFileFilter is a combination of a normal {@link java.io.FileFilter}, {@link javax.swing.filechooser.FileFilter} and {@link net.sf.japi.util.filter.file.FileFilter}. * @author <a href="mailto:ch...@ri...">Christian Hujer</a> */ @SuppressWarnings({"EmptyClass"}) Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2008-10-07 23:24:28 UTC (rev 696) @@ -28,10 +28,10 @@ */ public class EndingFileFilter extends AbstractFileFilter { - /** Wether to accept directories. */ + /** Whether to accept directories. */ private final boolean acceptDirectories; - /** Wether to negate the endings. */ + /** Whether to negate the endings. */ private final boolean negate; /** The description text. */ Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/Factory.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/Factory.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/Factory.java 2008-10-07 23:24:28 UTC (rev 696) @@ -57,7 +57,7 @@ /** {@inheritDoc} */ @Override public boolean accept(final File pathname) { - // XXX workaround bug in IntelliJ IDEA + // XXX:christianhujer:workaround bug in IntelliJ IDEA //noinspection RedundantCast return !((java.io.FileFilter) filter).accept(pathname); } @@ -68,7 +68,7 @@ + (filter instanceof javax.swing.filechooser.FileFilter ? ((javax.swing.filechooser.FileFilter) filter).getDescription() : filter.toString()) - + ')'; // TODO: I18N/L10N + + ')'; // TODO:christianhujer:I18N/L10N } } // class NotFileFilter Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/FilenameFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/FilenameFileFilter.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/FilenameFileFilter.java 2008-10-07 23:24:28 UTC (rev 696) @@ -27,10 +27,10 @@ */ public final class FilenameFileFilter extends AbstractFileFilter { - /** Wether to accept directories. */ + /** Whether to accept directories. */ private final boolean acceptDirectories; - /** Wether to negate the names. */ + /** Whether to negate the names. */ private final boolean negate; /** The description text. */ Modified: libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java 2008-10-07 23:20:54 UTC (rev 695) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java 2008-10-07 23:24:28 UTC (rev 696) @@ -23,6 +23,7 @@ import java.util.Arrays; import junit.framework.TestCase; import net.sf.japi.util.Arrays2; +import net.sf.japi.util.filter.Filter; import org.junit.Test; /** Test for {@link Arrays2}. @@ -30,9 +31,9 @@ */ public class Arrays2Test extends TestCase { - /** Test case for Arrays2#concat(double[]...). */ + /** Test case for {@link Arrays2#concat(byte[]...)}. */ @Test - public void testConcat() { + public void testConcatByte() { final byte[] data1Orig = {1, 2, 3}; final byte[] data2Orig = {4, 5, 6, 7}; final byte[] data1Copy = data1Orig.clone(); @@ -44,4 +45,160 @@ assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } + /** Test case for {@link Arrays2#concat(short[]...)}. */ + @Test + public void testConcatShort() { + final short[] data1Orig = {1, 2, 3}; + final short[] data2Orig = {4, 5, 6, 7}; + final short[] data1Copy = data1Orig.clone(); + final short[] data2Copy = data2Orig.clone(); + final short[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final short[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(int[]...)}. */ + @Test + public void testConcatInt() { + final int[] data1Orig = {1, 2, 3}; + final int[] data2Orig = {4, 5, 6, 7}; + final int[] data1Copy = data1Orig.clone(); + final int[] data2Copy = data2Orig.clone(); + final int[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final int[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(long[]...)}. */ + @Test + public void testConcatLong() { + final long[] data1Orig = {1, 2, 3}; + final long[] data2Orig = {4, 5, 6, 7}; + final long[] data1Copy = data1Orig.clone(); + final long[] data2Copy = data2Orig.clone(); + final long[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final long[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(float[]...)}. */ + @Test + public void testConcatFloat() { + final float[] data1Orig = {1, 2, 3}; + final float[] data2Orig = {4, 5, 6, 7}; + final float[] data1Copy = data1Orig.clone(); + final float[] data2Copy = data2Orig.clone(); + final float[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final float[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(double[]...)}. */ + @Test + public void testConcatDouble() { + final double[] data1Orig = {1, 2, 3}; + final double[] data2Orig = {4, 5, 6, 7}; + final double[] data1Copy = data1Orig.clone(); + final double[] data2Copy = data2Orig.clone(); + final double[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final double[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(char[]...)}. */ + @Test + public void testConcatChar() { + final char[] data1Orig = {1, 2, 3}; + final char[] data2Orig = {4, 5, 6, 7}; + final char[] data1Copy = data1Orig.clone(); + final char[] data2Copy = data2Orig.clone(); + final char[] concatExpected = {1, 2, 3, 4, 5, 6, 7}; + final char[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(boolean[]...)}. */ + @Test + public void testConcatBoolean() { + final boolean[] data1Orig = {true, false, true}; + final boolean[] data2Orig = {false, true, false, false}; + final boolean[] data1Copy = data1Orig.clone(); + final boolean[] data2Copy = data2Orig.clone(); + final boolean[] concatExpected = {true, false, true, false, true, false, false}; + final boolean[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#concat(Object[][])}. */ + @Test + public void testConcatObject() { + final String[] data1Orig = {"1", "2", "3"}; + final String[] data2Orig = {"4", "5", "6", "7"}; + final String[] data1Copy = data1Orig.clone(); + final String[] data2Copy = data2Orig.clone(); + final String[] concatExpected = {"1", "2", "3", "4", "5", "6", "7"}; + final String[] concatResult = Arrays2.concat(data1Copy, data2Copy); + assertTrue("Original arrays must be unmodified", Arrays.equals(data1Orig, data1Copy)); + assertTrue("Original arrays must be unmodified", Arrays.equals(data2Orig, data2Copy)); + assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); + } + + /** Test case for {@link Arrays2#filter(Filter, Object[])}. */ + @Test + public void testFilter() { + final String[] dataOrig = {"foo1", "foo2", "bar1", "foo3", "bar2", "bar3", "bar4"}; + final String[] dataCopy = dataOrig.clone(); + final Filter<String> filter = new Filter<String>() { + public boolean accept(final String o) { + return o.startsWith("foo"); + } + }; + final String[] expected = {"foo1", "foo2", "foo3"}; + final String[] actual = Arrays2.filter(filter, dataCopy); + assertTrue("Original array must be unmodified", Arrays.equals(dataOrig, dataCopy)); + assertTrue("Filter must filter correctly.", Arrays.equals(expected, actual)); + } + + /** Test case for {@link Arrays2#count(Filter, Object[])}. */ + @Test + public void testCount() { + final String[] dataOrig = {"foo1", "foo2", "bar1", "foo3", "bar2", "bar3", "bar4"}; + final String[] dataCopy = dataOrig.clone(); + final Filter<String> filter = new Filter<String>() { + public boolean accept(final String o) { + return o.startsWith("foo"); + } + }; + final int expected = 3; + final int actual = Arrays2.count(filter, dataCopy); + assertTrue("Original array must be unmodified", Arrays.equals(dataOrig, dataCopy)); + assertEquals("Count must count correctly.", expected, actual); + } + + /** Test case for {@link Arrays2#linearSearch(int, int[])}. */ + @Test + public void testLinearSearch() { + final int[] data = { 0, 1, 2, 3 }; + assertEquals(-1, Arrays2.linearSearch(-1, data)); + assertEquals(0, Arrays2.linearSearch(0, data)); + assertEquals(1, Arrays2.linearSearch(1, data)); + assertEquals(2, Arrays2.linearSearch(2, data)); + assertEquals(3, Arrays2.linearSearch(3, data)); + assertEquals(-1, Arrays2.linearSearch(4, data)); + } + } // class Arrays2Test Copied: libs/util/trunk/src/tst/test/net/sf/japi/util/EnumerationIteratorTest.java (from rev 635, historic/trunk/src/test/net/sf/japi/util/EnumerationIteratorTest.java) =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/EnumerationIteratorTest.java (rev 0) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/EnumerationIteratorTest.java 2008-10-07 23:24:28 UTC (rev 696) @@ -0,0 +1,92 @@ +/* + * JAPI - (Yet another (hopefully) useful) Java API + * + * Copyright (C) 2006 Christian Hujer + * + * This program 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 of the + * License, or (at your option) any later version. + * + * This program 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 this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +package test.net.sf.japi.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.NoSuchElementException; +import net.sf.japi.util.EnumerationIterator; +import org.junit.Assert; +import org.junit.Test; + +/** Test class for {@link EnumerationIterator}. + * @author <a href="mailto:ch...@it...">Christian Hujer</a> + */ +public class EnumerationIteratorTest { + + /** Test case for {@link EnumerationIterator#iterator()}. */ + @Test + public void testIterator() throws Exception { + EnumerationIterator<?> oUT = new EnumerationIterator<String>(Collections.enumeration(Arrays.asList("foo", "bar"))); + Assert.assertNotNull("Even empty enumerations must generate an iterator instance.", oUT.iterator()); + oUT = new EnumerationIterator<Object>(Collections.enumeration(Arrays.asList())); + Assert.assertNotNull("Even empty enumerations must generate an iterator instance.", oUT.iterator()); + } + + /** Test case for {@link EnumerationIterator#hasNext()}. */ + @Test public void testHasNext() throws Exception { + EnumerationIterator<?> oUT = new EnumerationIterator<Object>(Collections.enumeration(Arrays.asList())); + Assert.assertFalse("hasNext() on empty enumeration must instantly return false.", oUT.hasNext()); + oUT = new EnumerationIterator<String>(Collections.enumeration(Arrays.asList("foo", "bar"))); + Assert.assertTrue("hasNext() on nonempty enumeration must first return true.", oUT.hasNext()); + } + + /** Test case for {@link EnumerationIterator#next()}. */ + @Test public void testNext() throws Exception { + EnumerationIterator<?> oUT = new EnumerationIterator<Object>(Collections.enumeration(Arrays.asList())); + try { + oUT.next(); + Assert.fail("next() on empty enumeration must instantly throw NoSuchElementException."); + } catch (final NoSuchElementException e) { + /* Expected exception. */ + } + oUT = new EnumerationIterator<String>(Collections.enumeration(Arrays.asList("foo", "bar"))); + oUT.next(); + oUT.next(); + try { + oUT.next(); + Assert.fail("next() on two elements enumeration must throw NoSuchElementException on third invocation."); + } catch (final NoSuchElementException e) { + /* Expected exception. */ + } + } + + /** Test case for {@link EnumerationIterator#remove()}. */ + @Test public void testRemove() throws Exception { + EnumerationIterator<?> oUT = new EnumerationIterator<Object>(Collections.enumeration(Arrays.asList())); + try { + oUT.remove(); + Assert.fail("remove() on empty enumeration must instantly throw UnsupportedOperationException."); + } catch (final UnsupportedOperationException e) { + /* Expected exception. */ + } + oUT = new EnumerationIterator<String>(Collections.enumeration(Arrays.asList("foo", "bar"))); + try { + oUT.next(); + oUT.remove(); + Assert.fail("remove() must throw UnsupportedOperationException."); + } catch (final UnsupportedOperationException e) { + /* Expected exception. */ + } + } + +} // class EnumerationIteratorTest Property changes on: libs/util/trunk/src/tst/test/net/sf/japi/util/EnumerationIteratorTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + LF This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2009-02-24 02:28:41
|
Revision: 1176 http://japi.svn.sourceforge.net/japi/?rev=1176&view=rev Author: christianhujer Date: 2009-02-24 02:26:00 +0000 (Tue, 24 Feb 2009) Log Message: ----------- Fixed javadoc issues. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/LocaleComparator.java libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/LocaleComparator.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/LocaleComparator.java 2009-02-24 02:25:28 UTC (rev 1175) +++ libs/util/trunk/src/prj/net/sf/japi/util/LocaleComparator.java 2009-02-24 02:26:00 UTC (rev 1176) @@ -34,7 +34,9 @@ /** Serial version. */ private static final long serialVersionUID = 1L; - /** Collator for comparing the names. */ + /** Collator for comparing the names. + * @serial include + */ @NotNull private final Collator collator = Collator.getInstance(); /** Create a LocaleComparator. */ Modified: libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java 2009-02-24 02:25:28 UTC (rev 1175) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/Arrays2Test.java 2009-02-24 02:26:00 UTC (rev 1176) @@ -29,7 +29,8 @@ */ public class Arrays2Test { - /** Test case for {@link Arrays2#concat(byte[]...)}. */ + /** Test case for {@link Arrays2#concat(byte[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on byte[][] (javadoc) vs. byte[]... (IDEA). @Test public void testConcatByte() { final byte[] data1Orig = {1, 2, 3}; @@ -43,7 +44,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(short[]...)}. */ + /** Test case for {@link Arrays2#concat(short[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on short[][] (javadoc) vs. short[]... (IDEA). @Test public void testConcatShort() { final short[] data1Orig = {1, 2, 3}; @@ -57,7 +59,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(int[]...)}. */ + /** Test case for {@link Arrays2#concat(int[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on int[][] (javadoc) vs. int[]... (IDEA). @Test public void testConcatInt() { final int[] data1Orig = {1, 2, 3}; @@ -71,7 +74,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(long[]...)}. */ + /** Test case for {@link Arrays2#concat(long[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on long[][] (javadoc) vs. long[]... (IDEA). @Test public void testConcatLong() { final long[] data1Orig = {1, 2, 3}; @@ -85,7 +89,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(float[]...)}. */ + /** Test case for {@link Arrays2#concat(float[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on float[][] (javadoc) vs. float[]... (IDEA). @Test public void testConcatFloat() { final float[] data1Orig = {1, 2, 3}; @@ -99,7 +104,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(double[]...)}. */ + /** Test case for {@link Arrays2#concat(double[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on double[][] (javadoc) vs. double[]... (IDEA). @Test public void testConcatDouble() { final double[] data1Orig = {1, 2, 3}; @@ -113,7 +119,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(char[]...)}. */ + /** Test case for {@link Arrays2#concat(char[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on char[][] (javadoc) vs. char[]... (IDEA). @Test public void testConcatChar() { final char[] data1Orig = {1, 2, 3}; @@ -127,7 +134,8 @@ Assert.assertTrue("Concatenation must correctly concatenate", Arrays.equals(concatExpected, concatResult)); } - /** Test case for {@link Arrays2#concat(boolean[]...)}. */ + /** Test case for {@link Arrays2#concat(boolean[][])}. */ + @SuppressWarnings({"JavadocReference"}) // javadoc and IntelliJ IDEA disagree on boolean[][] (javadoc) vs. boolean[]... (IDEA). @Test public void testConcatBoolean() { final boolean[] data1Orig = {true, false, true}; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2009-04-04 19:20:30
|
Revision: 1271 http://japi.svn.sourceforge.net/japi/?rev=1271&view=rev Author: akirschbaum Date: 2009-04-04 19:20:27 +0000 (Sat, 04 Apr 2009) Log Message: ----------- Fix EndingFileFilter. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java Added Paths: ----------- libs/util/trunk/src/tst/test/net/sf/japi/util/filter/ libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/ libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2009-03-22 13:46:23 UTC (rev 1270) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2009-04-04 19:20:27 UTC (rev 1271) @@ -86,7 +86,6 @@ ret |= fileName.endsWith(ending); } } - ret = acceptDirectories ? pathname.isDirectory() : !pathname.isDirectory(); if (acceptDirectories) { ret |= pathname.isDirectory(); } else { Added: libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java (rev 0) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java 2009-04-04 19:20:27 UTC (rev 1271) @@ -0,0 +1,60 @@ +package test.net.sf.japi.util.filter.file; + +import java.io.File; +import java.io.FileFilter; +import net.sf.japi.util.filter.file.EndingFileFilter; +import org.junit.Assert; +import org.junit.Test; + +/** Test for {@link EndingFileFilter}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class EndingFileFilterTest { + + /** Test case for {@link EndingFileFilter#accept(File)}. */ + @Test + public void testAccept() { + final File file1 = new File("test.abc"); + checkFileFilter(new boolean[] {true,false,true,false,}, file1, ".abc", ".def", ".ghi"); + checkFileFilter(new boolean[] {false,true,false,true,}, file1, ".def", ".ghi"); + + final File dir1 = new File("test.abc") { + /** The serial version UID. */ + private static final long serialVersionUID = 1; + + /** {@inheritDoc} */ + @Override + public boolean isDirectory() { + return true; + } + }; + checkFileFilter(new boolean[] {false,false,true,true,}, dir1, ".abc", ".def", ".ghi"); + checkFileFilter(new boolean[] {false,false,true,true,}, dir1, ".def", ".ghi"); + } + + /** Checks that {@link EndingFileFilter#accept(File)} returns the expected result. + * @param expectedResults the expected results from accept(File) + * @param file the file to pass to accept(File) + * @param endings parameter for EndingFileFilter constructor + */ + private static void checkFileFilter(final boolean[] expectedResults, final File file, final String... endings) { + Assert.assertEquals(4, expectedResults.length); + checkFileFilter(false, false, expectedResults[0], file, endings); + checkFileFilter(false, true, expectedResults[1], file, endings); + checkFileFilter(true, false, expectedResults[2], file, endings); + checkFileFilter(true, true, expectedResults[3], file, endings); + } + + /** Checks that {@link EndingFileFilter#accept(File)} returns the expected result. + * @param acceptDirectories parameter for EndingFileFilter constructor + * @param negate parameter for EndingFileFilter constructor + * @param expectedResult the expected result of accept(File) + * @param file the file to pass to accept(File) + * @param endings parameter for EndingFileFilter constructor + */ + private static void checkFileFilter(final boolean acceptDirectories, final boolean negate, final boolean expectedResult, final File file, final String... endings) { + final FileFilter fileFilter = new EndingFileFilter(acceptDirectories, negate, "description", endings); + Assert.assertEquals(expectedResult, fileFilter.accept(file)); + } + +} // class EndingFileFilterTest Property changes on: libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + LF This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2009-05-09 18:30:50
|
Revision: 1278 http://japi.svn.sourceforge.net/japi/?rev=1278&view=rev Author: christianhujer Date: 2009-05-09 18:30:43 +0000 (Sat, 09 May 2009) Log Message: ----------- Added collect method to Collections2. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/Collections2.java Added Paths: ----------- libs/util/trunk/src/tst/test/net/sf/japi/util/Collections2Test.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/Collections2.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/Collections2.java 2009-05-09 18:30:43 UTC (rev 1277) +++ libs/util/trunk/src/prj/net/sf/japi/util/Collections2.java 2009-05-09 18:30:43 UTC (rev 1278) @@ -180,4 +180,16 @@ } } + /** Collects items from an Iterator into a Collection. + * @param c Collection to which the items shall be collected. + * @param iterator Iterator from which to collect items. + * @return <var>c</var> after the items from <var>iterator</var> have been added to it. + */ + public static <T, C extends Collection<T>> C collect(final C c, final Iterator<T> iterator) { + while (iterator.hasNext()) { + c.add(iterator.next()); + } + return c; + } + } // class Collections2 Added: libs/util/trunk/src/tst/test/net/sf/japi/util/Collections2Test.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/Collections2Test.java (rev 0) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/Collections2Test.java 2009-05-09 18:30:43 UTC (rev 1278) @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2009 Christian Hujer. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package test.net.sf.japi.util; + +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; +import net.sf.japi.util.Collections2; +import org.junit.Assert; +import org.junit.Test; + +/** Test for {@link Collections2}. + * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + */ +public class Collections2Test { + + /** Test case for {@link Collections2#collect(Collection, Iterator)}. */ + @Test + public void testCollect() { + final Set<String> original = Collections.unmodifiableSet(new HashSet<String>(Arrays.asList("foo", "bar"))); + final Set<String> collected = Collections2.collect(new HashSet<String>(), original.iterator()); + Assert.assertEquals("Collect must collect all elements.", original, collected); + } + +} Property changes on: libs/util/trunk/src/tst/test/net/sf/japi/util/Collections2Test.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + LF This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <chr...@us...> - 2009-05-09 22:33:38
|
Revision: 1284 http://japi.svn.sourceforge.net/japi/?rev=1284&view=rev Author: christianhujer Date: 2009-05-09 22:33:37 +0000 (Sat, 09 May 2009) Log Message: ----------- Update copyright, author, since. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2009-05-09 22:16:25 UTC (rev 1283) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/EndingFileFilter.java 2009-05-09 22:33:37 UTC (rev 1284) @@ -1,5 +1,6 @@ /* * Copyright (C) 2009 Christian Hujer. + * Copyright (C) 2009 Andreas Kirschbaum. * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,6 +23,7 @@ /** Swing FileFilter implementation that filters files with specified endings. * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + * @author Andreas Kirschbaum * @since 0.1 * @todo find a convenient way for i18n/l10n of this class * @todo option to ignore case Modified: libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java 2009-05-09 22:16:25 UTC (rev 1283) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/EndingFileFilterTest.java 2009-05-09 22:33:37 UTC (rev 1284) @@ -1,3 +1,21 @@ +/* + * Copyright (C) 2009 Andreas Kirschbaum. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + package test.net.sf.japi.util.filter.file; import java.io.File; @@ -7,7 +25,8 @@ import org.junit.Test; /** Test for {@link EndingFileFilter}. - * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + * @author Andreas Kirschbaum + * @since 0.1 */ public class EndingFileFilterTest { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <aki...@us...> - 2009-09-21 19:47:02
|
Revision: 1378 http://japi.svn.sourceforge.net/japi/?rev=1378&view=rev Author: akirschbaum Date: 2009-09-21 19:46:51 +0000 (Mon, 21 Sep 2009) Log Message: ----------- Fix GlobFileFilter implementation; add unit test. Modified Paths: -------------- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/GlobFileFilter.java Added Paths: ----------- libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/GlobFileFilterTest.java Modified: libs/util/trunk/src/prj/net/sf/japi/util/filter/file/GlobFileFilter.java =================================================================== --- libs/util/trunk/src/prj/net/sf/japi/util/filter/file/GlobFileFilter.java 2009-09-13 18:11:41 UTC (rev 1377) +++ libs/util/trunk/src/prj/net/sf/japi/util/filter/file/GlobFileFilter.java 2009-09-21 19:46:51 UTC (rev 1378) @@ -26,19 +26,11 @@ * </ul> * @note Currently only matching file names, not directories is possible. Globs with '/' in it are likely to always fail on most operating systems. * @author <a href="mailto:ch...@ri...">Christian Hujer</a> + * @author Andreas Kirschbaum * @since 0.1 */ public class GlobFileFilter extends RegexFileFilter { - /** The regular expressions to perform for turning a glob into a pattern. */ - private static final String[][] REGEXES = { - {"(\\(|\\.|\\+|\\))", "\\\\$1"}, // escape the characters '(', '.', '+', ')' - {"\\*", ".*"}, // replace "*" with ".*" - {"\\?", "."}, // replace "?" with "." - {"^", "^"}, // prefix with ^ - {"$", "\\$"}, // postfix with $ - }; - /** Create a GlobFileFilter. * @param globs Globs to match against. */ @@ -65,11 +57,38 @@ * @return regular expression matching the same filename as the shell glob */ public static String createPatternForGlob(final String glob) { - String pattern = glob; - for (final String[] replaceStep : REGEXES) { - pattern = pattern.replaceAll(replaceStep[0], replaceStep[1]); + final StringBuilder sb = new StringBuilder(); + boolean quoting = false; + final char[] chars = glob.toCharArray(); + for (int i = 0; i < chars.length; i++) { + final char ch = chars[i]; + if (ch == '*') { + if (quoting) { + quoting = false; + sb.append("\\E"); + } + sb.append(".*"); + } else if (ch == '?') { + if (quoting) { + quoting = false; + sb.append("\\E"); + } + sb.append("."); + } else if (ch == '\\' && i + 1 < chars.length && chars[i + 1] == 'E') { + if (quoting) { + quoting = false; + sb.append("\\E"); + } + sb.append("\\\\"); + } else { + if (!quoting) { + quoting = true; + sb.append("\\Q"); + } + sb.append(ch); + } } - return pattern; + return sb.toString(); } } // class GlobFileFilter Added: libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/GlobFileFilterTest.java =================================================================== --- libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/GlobFileFilterTest.java (rev 0) +++ libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/GlobFileFilterTest.java 2009-09-21 19:46:51 UTC (rev 1378) @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2009 Andreas Kirschbaum. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library 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 + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +package test.net.sf.japi.util.filter.file; + +import java.util.regex.Pattern; +import net.sf.japi.util.filter.file.GlobFileFilter; +import org.jetbrains.annotations.NotNull; +import org.junit.Assert; +import org.junit.Test; + +/** Test for {@link GlobFileFilter}. + * @author Andreas Kirschbaum + */ +public class GlobFileFilterTest { + + /** Test case for {@link GlobFileFilter#createPatternForGlob(String)}. + * @noinspection JUnitTestMethodWithNoAssertions + */ + @Test + public void testConcatByte() { + checkCreatePatternForGlob("abcd", "abcd", true); + checkCreatePatternForGlob("abcd", "abc", false); + checkCreatePatternForGlob("abcd", "bcd", false); + checkCreatePatternForGlob("a", "abc", false); + checkCreatePatternForGlob("b", "abc", false); + checkCreatePatternForGlob("c", "abc", false); + checkCreatePatternForGlob("^a", "aba", false); + checkCreatePatternForGlob("$a", "aba", false); + checkCreatePatternForGlob("a^", "aba", false); + checkCreatePatternForGlob("a$", "aba", false); + checkCreatePatternForGlob("^aba", "^aba", true); + checkCreatePatternForGlob("$aba", "$aba", true); + checkCreatePatternForGlob("aba^", "aba^", true); + checkCreatePatternForGlob("aba$", "aba$", true); + checkCreatePatternForGlob("abc*def", "abcef", false); + checkCreatePatternForGlob("abc*def", "abcdef", true); + checkCreatePatternForGlob("abc*def", "abcxdef", true); + checkCreatePatternForGlob("abc*def", "abcagagadef", true); + checkCreatePatternForGlob("abc?def", "abcdef", false); + checkCreatePatternForGlob("abc?def", "abcxdef", true); + checkCreatePatternForGlob("abc?def", "abcxxdef", false); + final StringBuilder sb = new StringBuilder(); + for (int i = 0; i < 256; i++) { + final char ch = (char)i; + if (ch != '*' && ch != '?') { + final String s = Character.toString(ch); + checkCreatePatternForGlob(s, s, true); + sb.append(ch); + } + } + final String s = sb.toString(); + checkCreatePatternForGlob(s, s, true); + checkCreatePatternForGlob("\\Q*\\E*\\E\\Q", "\\Q\\Eabc\\E\\Q\\E\\Q", true); + } + + /** + * Calls {@link GlobFileFilter#createPatternForGlob(String)}, matches the given name against it and check for the expected result. + * @param glob the pattern to check + * @param name the name to match against the pattern + * @param expectedResult the expected result + */ + private static void checkCreatePatternForGlob(@NotNull final String glob, @NotNull final CharSequence name, final boolean expectedResult) { + final String pattern = GlobFileFilter.createPatternForGlob(glob); + Assert.assertEquals("glob="+glob+", pattern="+pattern, expectedResult, Pattern.compile(pattern).matcher(name).matches()); + } + +} Property changes on: libs/util/trunk/src/tst/test/net/sf/japi/util/filter/file/GlobFileFilterTest.java ___________________________________________________________________ Added: svn:mime-type + text/plain Added: svn:eol-style + LF This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |