/*!
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* 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 Lesser General Public License for more details.
*
* Copyright (c) 2002-2016 Pentaho Corporation.. All rights reserved.
*/
package org.pentaho.platform.repository;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import org.junit.Test;
import junit.framework.TestCase;
/**
* Test class for the {@link RepositoryFilenameUtils} class
*
* @author <a href="mailto:dkincade@pentaho.com">David M. Kincade</a>
*/
public class RepositoryFilenameUtilsTest extends TestCase {
// -----------------------------------------------------------------------
public void testNormalize() throws Exception {
assertEquals( null, RepositoryFilenameUtils.normalize( null ) );
assertEquals( null, RepositoryFilenameUtils.normalize( ":" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "1:\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "\\\\\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "\\\\a" ) );
assertEquals( "a/b/c.txt", RepositoryFilenameUtils.normalize( "a\\b/c.txt" ) );
assertEquals( "/a/b/c.txt", RepositoryFilenameUtils.normalize( "\\a\\b/c.txt" ) );
assertEquals( "C:/a/b/c.txt", RepositoryFilenameUtils.normalize( "C:\\a\\b/c.txt" ) );
assertEquals( "//server/a/b/c.txt", RepositoryFilenameUtils.normalize( "\\\\server\\a\\b/c.txt" ) );
assertEquals( "~/a/b/c.txt", RepositoryFilenameUtils.normalize( "~\\a\\b/c.txt" ) );
assertEquals( "~user/a/b/c.txt", RepositoryFilenameUtils.normalize( "~user\\a\\b/c.txt" ) );
assertEquals( "a/c", RepositoryFilenameUtils.normalize( "a/b/../c" ) );
assertEquals( "c", RepositoryFilenameUtils.normalize( "a/b/../../c" ) );
assertEquals( "c/", RepositoryFilenameUtils.normalize( "a/b/../../c/" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "a/b/../../../c" ) );
assertEquals( "a/", RepositoryFilenameUtils.normalize( "a/b/.." ) );
assertEquals( "a/", RepositoryFilenameUtils.normalize( "a/b/../" ) );
assertEquals( "", RepositoryFilenameUtils.normalize( "a/b/../.." ) );
assertEquals( "", RepositoryFilenameUtils.normalize( "a/b/../../" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "a/b/../../.." ) );
assertEquals( "a/d", RepositoryFilenameUtils.normalize( "a/b/../c/../d" ) );
assertEquals( "a/d/", RepositoryFilenameUtils.normalize( "a/b/../c/../d/" ) );
assertEquals( "a/b/d", RepositoryFilenameUtils.normalize( "a/b//d" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.normalize( "a/b/././." ) );
assertEquals( "a/b/", RepositoryFilenameUtils.normalize( "a/b/./././" ) );
assertEquals( "a/", RepositoryFilenameUtils.normalize( "./a/" ) );
assertEquals( "a", RepositoryFilenameUtils.normalize( "./a" ) );
assertEquals( "", RepositoryFilenameUtils.normalize( "./" ) );
assertEquals( "", RepositoryFilenameUtils.normalize( "." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( ".." ) );
assertEquals( "", RepositoryFilenameUtils.normalize( "" ) );
assertEquals( "/a", RepositoryFilenameUtils.normalize( "/a" ) );
assertEquals( "/a/", RepositoryFilenameUtils.normalize( "/a/" ) );
assertEquals( "/a/c", RepositoryFilenameUtils.normalize( "/a/b/../c" ) );
assertEquals( "/c", RepositoryFilenameUtils.normalize( "/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "/a/b/../../../c" ) );
assertEquals( "/a/", RepositoryFilenameUtils.normalize( "/a/b/.." ) );
assertEquals( "/", RepositoryFilenameUtils.normalize( "/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "/a/b/../../.." ) );
assertEquals( "/a/d", RepositoryFilenameUtils.normalize( "/a/b/../c/../d" ) );
assertEquals( "/a/b/d", RepositoryFilenameUtils.normalize( "/a/b//d" ) );
assertEquals( "/a/b/", RepositoryFilenameUtils.normalize( "/a/b/././." ) );
assertEquals( "/a", RepositoryFilenameUtils.normalize( "/./a" ) );
assertEquals( "/", RepositoryFilenameUtils.normalize( "/./" ) );
assertEquals( "/", RepositoryFilenameUtils.normalize( "/." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "/.." ) );
assertEquals( "/", RepositoryFilenameUtils.normalize( "/" ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalize( "~/a" ) );
assertEquals( "~/a/", RepositoryFilenameUtils.normalize( "~/a/" ) );
assertEquals( "~/a/c", RepositoryFilenameUtils.normalize( "~/a/b/../c" ) );
assertEquals( "~/c", RepositoryFilenameUtils.normalize( "~/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~/a/b/../../../c" ) );
assertEquals( "~/a/", RepositoryFilenameUtils.normalize( "~/a/b/.." ) );
assertEquals( "~/", RepositoryFilenameUtils.normalize( "~/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~/a/b/../../.." ) );
assertEquals( "~/a/d", RepositoryFilenameUtils.normalize( "~/a/b/../c/../d" ) );
assertEquals( "~/a/b/d", RepositoryFilenameUtils.normalize( "~/a/b//d" ) );
assertEquals( "~/a/b/", RepositoryFilenameUtils.normalize( "~/a/b/././." ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalize( "~/./a" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalize( "~/./" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalize( "~/." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~/.." ) );
assertEquals( "~/", RepositoryFilenameUtils.normalize( "~/" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalize( "~" ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalize( "~user/a" ) );
assertEquals( "~user/a/", RepositoryFilenameUtils.normalize( "~user/a/" ) );
assertEquals( "~user/a/c", RepositoryFilenameUtils.normalize( "~user/a/b/../c" ) );
assertEquals( "~user/c", RepositoryFilenameUtils.normalize( "~user/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~user/a/b/../../../c" ) );
assertEquals( "~user/a/", RepositoryFilenameUtils.normalize( "~user/a/b/.." ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalize( "~user/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~user/a/b/../../.." ) );
assertEquals( "~user/a/d", RepositoryFilenameUtils.normalize( "~user/a/b/../c/../d" ) );
assertEquals( "~user/a/b/d", RepositoryFilenameUtils.normalize( "~user/a/b//d" ) );
assertEquals( "~user/a/b/", RepositoryFilenameUtils.normalize( "~user/a/b/././." ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalize( "~user/./a" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalize( "~user/./" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalize( "~user/." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~user/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "~user/.." ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalize( "~user/" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalize( "~user" ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalize( "C:/a" ) );
assertEquals( "C:/a/", RepositoryFilenameUtils.normalize( "C:/a/" ) );
assertEquals( "C:/a/c", RepositoryFilenameUtils.normalize( "C:/a/b/../c" ) );
assertEquals( "C:/c", RepositoryFilenameUtils.normalize( "C:/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:/a/b/../../../c" ) );
assertEquals( "C:/a/", RepositoryFilenameUtils.normalize( "C:/a/b/.." ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalize( "C:/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:/a/b/../../.." ) );
assertEquals( "C:/a/d", RepositoryFilenameUtils.normalize( "C:/a/b/../c/../d" ) );
assertEquals( "C:/a/b/d", RepositoryFilenameUtils.normalize( "C:/a/b//d" ) );
assertEquals( "C:/a/b/", RepositoryFilenameUtils.normalize( "C:/a/b/././." ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalize( "C:/./a" ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalize( "C:/./" ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalize( "C:/." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:/.." ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalize( "C:/" ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalize( "C:a" ) );
assertEquals( "C:a/", RepositoryFilenameUtils.normalize( "C:a/" ) );
assertEquals( "C:a/c", RepositoryFilenameUtils.normalize( "C:a/b/../c" ) );
assertEquals( "C:c", RepositoryFilenameUtils.normalize( "C:a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:a/b/../../../c" ) );
assertEquals( "C:a/", RepositoryFilenameUtils.normalize( "C:a/b/.." ) );
assertEquals( "C:", RepositoryFilenameUtils.normalize( "C:a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:a/b/../../.." ) );
assertEquals( "C:a/d", RepositoryFilenameUtils.normalize( "C:a/b/../c/../d" ) );
assertEquals( "C:a/b/d", RepositoryFilenameUtils.normalize( "C:a/b//d" ) );
assertEquals( "C:a/b/", RepositoryFilenameUtils.normalize( "C:a/b/././." ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalize( "C:./a" ) );
assertEquals( "C:", RepositoryFilenameUtils.normalize( "C:./" ) );
assertEquals( "C:", RepositoryFilenameUtils.normalize( "C:." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "C:.." ) );
assertEquals( "C:", RepositoryFilenameUtils.normalize( "C:" ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalize( "//server/a" ) );
assertEquals( "//server/a/", RepositoryFilenameUtils.normalize( "//server/a/" ) );
assertEquals( "//server/a/c", RepositoryFilenameUtils.normalize( "//server/a/b/../c" ) );
assertEquals( "//server/c", RepositoryFilenameUtils.normalize( "//server/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "//server/a/b/../../../c" ) );
assertEquals( "//server/a/", RepositoryFilenameUtils.normalize( "//server/a/b/.." ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalize( "//server/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "//server/a/b/../../.." ) );
assertEquals( "//server/a/d", RepositoryFilenameUtils.normalize( "//server/a/b/../c/../d" ) );
assertEquals( "//server/a/b/d", RepositoryFilenameUtils.normalize( "//server/a/b//d" ) );
assertEquals( "//server/a/b/", RepositoryFilenameUtils.normalize( "//server/a/b/././." ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalize( "//server/./a" ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalize( "//server/./" ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalize( "//server/." ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "//server/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalize( "//server/.." ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalize( "//server/" ) );
}
// -----------------------------------------------------------------------
public void testNormalizeNoEndSeparator() throws Exception {
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( null ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( ":" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "1:\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "\\\\\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "\\\\a" ) );
assertEquals( "a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "a\\b/c.txt" ) );
assertEquals( "/a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "\\a\\b/c.txt" ) );
assertEquals( "C:/a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:\\a\\b/c.txt" ) );
assertEquals( "//server/a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "\\\\server\\a\\b/c.txt" ) );
assertEquals( "~/a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "~\\a\\b/c.txt" ) );
assertEquals( "~user/a/b/c.txt", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user\\a\\b/c.txt" ) );
assertEquals( "a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../c" ) );
assertEquals( "c", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../../c" ) );
assertEquals( "c", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../../c/" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../../../c" ) );
assertEquals( "a", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/.." ) );
assertEquals( "a", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../" ) );
assertEquals( "", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../.." ) );
assertEquals( "", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../../" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../../.." ) );
assertEquals( "a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../c/../d" ) );
assertEquals( "a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/../c/../d/" ) );
assertEquals( "a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b//d" ) );
assertEquals( "a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/././." ) );
assertEquals( "a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "a/b/./././" ) );
assertEquals( "a", RepositoryFilenameUtils.normalizeNoEndSeparator( "./a/" ) );
assertEquals( "a", RepositoryFilenameUtils.normalizeNoEndSeparator( "./a" ) );
assertEquals( "", RepositoryFilenameUtils.normalizeNoEndSeparator( "./" ) );
assertEquals( "", RepositoryFilenameUtils.normalizeNoEndSeparator( "." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( ".." ) );
assertEquals( "", RepositoryFilenameUtils.normalizeNoEndSeparator( "" ) );
assertEquals( "/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a" ) );
assertEquals( "/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/" ) );
assertEquals( "/a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../c" ) );
assertEquals( "/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../../../c" ) );
assertEquals( "/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/.." ) );
assertEquals( "/", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../../.." ) );
assertEquals( "/a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/../c/../d" ) );
assertEquals( "/a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b//d" ) );
assertEquals( "/a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "/a/b/././." ) );
assertEquals( "/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "/./a" ) );
assertEquals( "/", RepositoryFilenameUtils.normalizeNoEndSeparator( "/./" ) );
assertEquals( "/", RepositoryFilenameUtils.normalizeNoEndSeparator( "/." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "/.." ) );
assertEquals( "/", RepositoryFilenameUtils.normalizeNoEndSeparator( "/" ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a" ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/" ) );
assertEquals( "~/a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../c" ) );
assertEquals( "~/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../../../c" ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/.." ) );
assertEquals( "~/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../../.." ) );
assertEquals( "~/a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/../c/../d" ) );
assertEquals( "~/a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b//d" ) );
assertEquals( "~/a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/a/b/././." ) );
assertEquals( "~/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/./a" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/./" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~/.." ) );
assertEquals( "~/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~/" ) );
assertEquals( "~/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~" ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a" ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/" ) );
assertEquals( "~user/a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../c" ) );
assertEquals( "~user/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../../../c" ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/.." ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../../.." ) );
assertEquals( "~user/a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/../c/../d" ) );
assertEquals( "~user/a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b//d" ) );
assertEquals( "~user/a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/a/b/././." ) );
assertEquals( "~user/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/./a" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/./" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/.." ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user/" ) );
assertEquals( "~user/", RepositoryFilenameUtils.normalizeNoEndSeparator( "~user" ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a" ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/" ) );
assertEquals( "C:/a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../c" ) );
assertEquals( "C:/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../../../c" ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/.." ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../../.." ) );
assertEquals( "C:/a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/../c/../d" ) );
assertEquals( "C:/a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b//d" ) );
assertEquals( "C:/a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/a/b/././." ) );
assertEquals( "C:/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/./a" ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/./" ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/.." ) );
assertEquals( "C:/", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:/" ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a" ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/" ) );
assertEquals( "C:a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../c" ) );
assertEquals( "C:c", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../../../c" ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/.." ) );
assertEquals( "C:", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../../.." ) );
assertEquals( "C:a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/../c/../d" ) );
assertEquals( "C:a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b//d" ) );
assertEquals( "C:a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:a/b/././." ) );
assertEquals( "C:a", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:./a" ) );
assertEquals( "C:", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:./" ) );
assertEquals( "C:", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "C:.." ) );
assertEquals( "C:", RepositoryFilenameUtils.normalizeNoEndSeparator( "C:" ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a" ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/" ) );
assertEquals( "//server/a/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../c" ) );
assertEquals( "//server/c", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../../c" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../../../c" ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/.." ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../.." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../../.." ) );
assertEquals( "//server/a/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/../c/../d" ) );
assertEquals( "//server/a/b/d", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b//d" ) );
assertEquals( "//server/a/b", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/a/b/././." ) );
assertEquals( "//server/a", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/./a" ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/./" ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/." ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/../a" ) );
assertEquals( null, RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/.." ) );
assertEquals( "//server/", RepositoryFilenameUtils.normalizeNoEndSeparator( "//server/" ) );
}
// -----------------------------------------------------------------------
public void testConcat() {
assertEquals( null, RepositoryFilenameUtils.concat( "", null ) );
assertEquals( null, RepositoryFilenameUtils.concat( null, null ) );
assertEquals( null, RepositoryFilenameUtils.concat( null, "" ) );
assertEquals( null, RepositoryFilenameUtils.concat( null, "a" ) );
assertEquals( "/a", RepositoryFilenameUtils.concat( null, "/a" ) );
assertEquals( null, RepositoryFilenameUtils.concat( "", ":" ) ); // invalid prefix
assertEquals( null, RepositoryFilenameUtils.concat( ":", "" ) ); // invalid prefix
assertEquals( "f/", RepositoryFilenameUtils.concat( "", "f/" ) );
assertEquals( "f", RepositoryFilenameUtils.concat( "", "f" ) );
assertEquals( "a/f/", RepositoryFilenameUtils.concat( "a/", "f/" ) );
assertEquals( "a/f", RepositoryFilenameUtils.concat( "a", "f" ) );
assertEquals( "a/b/f/", RepositoryFilenameUtils.concat( "a/b/", "f/" ) );
assertEquals( "a/b/f", RepositoryFilenameUtils.concat( "a/b", "f" ) );
assertEquals( "a/f/", RepositoryFilenameUtils.concat( "a/b/", "../f/" ) );
assertEquals( "a/f", RepositoryFilenameUtils.concat( "a/b", "../f" ) );
assertEquals( "a/c/g/", RepositoryFilenameUtils.concat( "a/b/../c/", "f/../g/" ) );
assertEquals( "a/c/g", RepositoryFilenameUtils.concat( "a/b/../c", "f/../g" ) );
assertEquals( "a/c.txt/f", RepositoryFilenameUtils.concat( "a/c.txt", "f" ) );
assertEquals( "/f/", RepositoryFilenameUtils.concat( "", "/f/" ) );
assertEquals( "/f", RepositoryFilenameUtils.concat( "", "/f" ) );
assertEquals( "/f/", RepositoryFilenameUtils.concat( "a/", "/f/" ) );
assertEquals( "/f", RepositoryFilenameUtils.concat( "a", "/f" ) );
assertEquals( "/c/d", RepositoryFilenameUtils.concat( "a/b/", "/c/d" ) );
assertEquals( "a/b/C:c/d", RepositoryFilenameUtils.concat( "a/b/", "C:c/d" ) );
assertEquals( "a/b/C:/c/d", RepositoryFilenameUtils.concat( "a/b/", "C:/c/d" ) );
assertEquals( "~/c/d", RepositoryFilenameUtils.concat( "a/b/", "~/c/d" ) );
assertEquals( "~user/c/d", RepositoryFilenameUtils.concat( "a/b/", "~user/c/d" ) );
assertEquals( "~/", RepositoryFilenameUtils.concat( "a/b/", "~" ) );
assertEquals( "~user/", RepositoryFilenameUtils.concat( "a/b/", "~user" ) );
}
// -----------------------------------------------------------------------
public void testSeparatorsToUnix() {
assertEquals( null, RepositoryFilenameUtils.separatorsToRepository( null ) );
assertEquals( "/a/b/c", RepositoryFilenameUtils.separatorsToRepository( "/a/b/c" ) );
assertEquals( "/a/b/c.txt", RepositoryFilenameUtils.separatorsToRepository( "/a/b/c.txt" ) );
assertEquals( "/a/b/c", RepositoryFilenameUtils.separatorsToRepository( "/a/b\\c" ) );
assertEquals( "/a/b/c", RepositoryFilenameUtils.separatorsToRepository( "\\a\\b\\c" ) );
assertEquals( "D:/a/b/c", RepositoryFilenameUtils.separatorsToRepository( "D:\\a\\b\\c" ) );
}
// -----------------------------------------------------------------------
public void testGetPrefixLength() {
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( null ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( ":" ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( "1:\\a\\b\\c.txt" ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( "1:" ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( "1:a" ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( "\\\\\\a\\b\\c.txt" ) );
assertEquals( -1, RepositoryFilenameUtils.getPrefixLength( "\\\\a" ) );
assertEquals( 0, RepositoryFilenameUtils.getPrefixLength( "" ) );
assertEquals( 1, RepositoryFilenameUtils.getPrefixLength( "\\" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "C:" ) );
assertEquals( 3, RepositoryFilenameUtils.getPrefixLength( "C:\\" ) );
assertEquals( 9, RepositoryFilenameUtils.getPrefixLength( "//server/" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "~" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "~/" ) );
assertEquals( 6, RepositoryFilenameUtils.getPrefixLength( "~user" ) );
assertEquals( 6, RepositoryFilenameUtils.getPrefixLength( "~user/" ) );
assertEquals( 0, RepositoryFilenameUtils.getPrefixLength( "a\\b\\c.txt" ) );
assertEquals( 1, RepositoryFilenameUtils.getPrefixLength( "\\a\\b\\c.txt" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "C:a\\b\\c.txt" ) );
assertEquals( 3, RepositoryFilenameUtils.getPrefixLength( "C:\\a\\b\\c.txt" ) );
assertEquals( 9, RepositoryFilenameUtils.getPrefixLength( "\\\\server\\a\\b\\c.txt" ) );
assertEquals( 0, RepositoryFilenameUtils.getPrefixLength( "a/b/c.txt" ) );
assertEquals( 1, RepositoryFilenameUtils.getPrefixLength( "/a/b/c.txt" ) );
assertEquals( 3, RepositoryFilenameUtils.getPrefixLength( "C:/a/b/c.txt" ) );
assertEquals( 9, RepositoryFilenameUtils.getPrefixLength( "//server/a/b/c.txt" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "~/a/b/c.txt" ) );
assertEquals( 6, RepositoryFilenameUtils.getPrefixLength( "~user/a/b/c.txt" ) );
assertEquals( 0, RepositoryFilenameUtils.getPrefixLength( "a\\b\\c.txt" ) );
assertEquals( 1, RepositoryFilenameUtils.getPrefixLength( "\\a\\b\\c.txt" ) );
assertEquals( 2, RepositoryFilenameUtils.getPrefixLength( "~\\a\\b\\c.txt" ) );
assertEquals( 6, RepositoryFilenameUtils.getPrefixLength( "~user\\a\\b\\c.txt" ) );
}
public void testIndexOfLastSeparator() {
assertEquals( -1, RepositoryFilenameUtils.indexOfLastSeparator( null ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfLastSeparator( "noseperator.inthispath" ) );
assertEquals( 3, RepositoryFilenameUtils.indexOfLastSeparator( "a/b/c" ) );
assertEquals( 3, RepositoryFilenameUtils.indexOfLastSeparator( "a\\b\\c" ) );
}
public void testIndexOfExtension() {
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( null ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( "file" ) );
assertEquals( 4, RepositoryFilenameUtils.indexOfExtension( "file.txt" ) );
assertEquals( 13, RepositoryFilenameUtils.indexOfExtension( "a.txt/b.txt/c.txt" ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( "a/b/c" ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( "a\\b\\c" ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( "a/b.notextension/c" ) );
assertEquals( -1, RepositoryFilenameUtils.indexOfExtension( "a\\b.notextension\\c" ) );
}
// -----------------------------------------------------------------------
public void testGetPrefix() {
assertEquals( null, RepositoryFilenameUtils.getPrefix( null ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( ":" ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( "1:\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( "\\\\\\a\\b\\c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPrefix( "\\\\a" ) );
assertEquals( "", RepositoryFilenameUtils.getPrefix( "" ) );
assertEquals( "\\", RepositoryFilenameUtils.getPrefix( "\\" ) );
assertEquals( "C:", RepositoryFilenameUtils.getPrefix( "C:" ) );
assertEquals( "C:\\", RepositoryFilenameUtils.getPrefix( "C:\\" ) );
assertEquals( "//server/", RepositoryFilenameUtils.getPrefix( "//server/" ) );
assertEquals( "~/", RepositoryFilenameUtils.getPrefix( "~" ) );
assertEquals( "~/", RepositoryFilenameUtils.getPrefix( "~/" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getPrefix( "~user" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getPrefix( "~user/" ) );
assertEquals( "", RepositoryFilenameUtils.getPrefix( "a\\b\\c.txt" ) );
assertEquals( "\\", RepositoryFilenameUtils.getPrefix( "\\a\\b\\c.txt" ) );
assertEquals( "C:\\", RepositoryFilenameUtils.getPrefix( "C:\\a\\b\\c.txt" ) );
assertEquals( "\\\\server\\", RepositoryFilenameUtils.getPrefix( "\\\\server\\a\\b\\c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getPrefix( "a/b/c.txt" ) );
assertEquals( "/", RepositoryFilenameUtils.getPrefix( "/a/b/c.txt" ) );
assertEquals( "C:/", RepositoryFilenameUtils.getPrefix( "C:/a/b/c.txt" ) );
assertEquals( "//server/", RepositoryFilenameUtils.getPrefix( "//server/a/b/c.txt" ) );
assertEquals( "~/", RepositoryFilenameUtils.getPrefix( "~/a/b/c.txt" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getPrefix( "~user/a/b/c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getPrefix( "a\\b\\c.txt" ) );
assertEquals( "\\", RepositoryFilenameUtils.getPrefix( "\\a\\b\\c.txt" ) );
assertEquals( "~\\", RepositoryFilenameUtils.getPrefix( "~\\a\\b\\c.txt" ) );
assertEquals( "~user\\", RepositoryFilenameUtils.getPrefix( "~user\\a\\b\\c.txt" ) );
}
public void testGetPath() {
assertEquals( null, RepositoryFilenameUtils.getPath( null ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "noseperator.inthispath" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "a.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "a/b/c" ) );
assertEquals( "a/b/c/", RepositoryFilenameUtils.getPath( "a/b/c/" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "/a.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "/a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "/a/b/c" ) );
assertEquals( "a/b/c/", RepositoryFilenameUtils.getPath( "/a/b/c/" ) );
assertEquals( "a\\b\\", RepositoryFilenameUtils.getPath( "a\\b\\c" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( ":" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( "1:/a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( "///a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPath( "//a" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "C:" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "C:/" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "//server/" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "~" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "~/" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "~user" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "~user/" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "/a/b/c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "C:a" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "C:a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "C:/a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "//server/a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "~/a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getPath( "~user/a/b/c.txt" ) );
}
public void testGetPathNoEndSeparator() {
assertEquals( null, RepositoryFilenameUtils.getPath( null ) );
assertEquals( "", RepositoryFilenameUtils.getPath( "noseperator.inthispath" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "a.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "a/b/c" ) );
assertEquals( "a/b/c", RepositoryFilenameUtils.getPathNoEndSeparator( "a/b/c/" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "/a.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "/a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "/a/b/c" ) );
assertEquals( "a/b/c", RepositoryFilenameUtils.getPathNoEndSeparator( "/a/b/c/" ) );
assertEquals( "a\\b", RepositoryFilenameUtils.getPathNoEndSeparator( "a\\b\\c" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( ":" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( "1:/a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( "///a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getPathNoEndSeparator( "//a" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "C:" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "C:/" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "//server/" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "~" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "~/" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "~user" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "~user/" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "/a/b/c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getPathNoEndSeparator( "C:a" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "C:a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "C:/a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "//server/a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "~/a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getPathNoEndSeparator( "~user/a/b/c.txt" ) );
}
public void testGetFullPath() {
assertEquals( null, RepositoryFilenameUtils.getFullPath( null ) );
assertEquals( "", RepositoryFilenameUtils.getFullPath( "noseperator.inthispath" ) );
assertEquals( "", RepositoryFilenameUtils.getFullPath( "a.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getFullPath( "a/b/c.txt" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getFullPath( "a/b/c" ) );
assertEquals( "a/b/c/", RepositoryFilenameUtils.getFullPath( "a/b/c/" ) );
assertEquals( "/", RepositoryFilenameUtils.getFullPath( "/a.txt" ) );
assertEquals( "/a/b/", RepositoryFilenameUtils.getFullPath( "/a/b/c.txt" ) );
assertEquals( "/a/b/", RepositoryFilenameUtils.getFullPath( "/a/b/c" ) );
assertEquals( "/a/b/c/", RepositoryFilenameUtils.getFullPath( "/a/b/c/" ) );
assertEquals( "a\\b\\", RepositoryFilenameUtils.getFullPath( "a\\b\\c" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( ":" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( "1:/a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( "///a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPath( "//a" ) );
assertEquals( "", RepositoryFilenameUtils.getFullPath( "" ) );
assertEquals( "C:", RepositoryFilenameUtils.getFullPath( "C:" ) );
assertEquals( "C:/", RepositoryFilenameUtils.getFullPath( "C:/" ) );
assertEquals( "//server/", RepositoryFilenameUtils.getFullPath( "//server/" ) );
assertEquals( "~/", RepositoryFilenameUtils.getFullPath( "~" ) );
assertEquals( "~/", RepositoryFilenameUtils.getFullPath( "~/" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getFullPath( "~user" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getFullPath( "~user/" ) );
assertEquals( "a/b/", RepositoryFilenameUtils.getFullPath( "a/b/c.txt" ) );
assertEquals( "/a/b/", RepositoryFilenameUtils.getFullPath( "/a/b/c.txt" ) );
assertEquals( "C:", RepositoryFilenameUtils.getFullPath( "C:a" ) );
assertEquals( "C:a/b/", RepositoryFilenameUtils.getFullPath( "C:a/b/c.txt" ) );
assertEquals( "C:/a/b/", RepositoryFilenameUtils.getFullPath( "C:/a/b/c.txt" ) );
assertEquals( "//server/a/b/", RepositoryFilenameUtils.getFullPath( "//server/a/b/c.txt" ) );
assertEquals( "~/a/b/", RepositoryFilenameUtils.getFullPath( "~/a/b/c.txt" ) );
assertEquals( "~user/a/b/", RepositoryFilenameUtils.getFullPath( "~user/a/b/c.txt" ) );
}
public void testGetFullPathNoEndSeparator() {
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( null ) );
assertEquals( "", RepositoryFilenameUtils.getFullPathNoEndSeparator( "noseperator.inthispath" ) );
assertEquals( "", RepositoryFilenameUtils.getFullPath( "a.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "a/b/c.txt" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "a/b/c" ) );
assertEquals( "a/b/c", RepositoryFilenameUtils.getFullPathNoEndSeparator( "a/b/c/" ) );
assertEquals( "/", RepositoryFilenameUtils.getFullPath( "/a.txt" ) );
assertEquals( "/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "/a/b/c.txt" ) );
assertEquals( "/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "/a/b/c" ) );
assertEquals( "/a/b/c", RepositoryFilenameUtils.getFullPathNoEndSeparator( "/a/b/c/" ) );
assertEquals( "a\\b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "a\\b\\c" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( ":" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( "1:/a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( "1:" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( "1:a" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( "///a/b/c.txt" ) );
assertEquals( null, RepositoryFilenameUtils.getFullPathNoEndSeparator( "//a" ) );
assertEquals( "", RepositoryFilenameUtils.getFullPathNoEndSeparator( "" ) );
assertEquals( "C:", RepositoryFilenameUtils.getFullPathNoEndSeparator( "C:" ) );
assertEquals( "C:/", RepositoryFilenameUtils.getFullPathNoEndSeparator( "C:/" ) );
assertEquals( "//server/", RepositoryFilenameUtils.getFullPathNoEndSeparator( "//server/" ) );
assertEquals( "~", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~" ) );
assertEquals( "~/", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~/" ) );
assertEquals( "~user", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~user" ) );
assertEquals( "~user/", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~user/" ) );
assertEquals( "a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "a/b/c.txt" ) );
assertEquals( "/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "/a/b/c.txt" ) );
assertEquals( "C:", RepositoryFilenameUtils.getFullPathNoEndSeparator( "C:a" ) );
assertEquals( "C:a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "C:a/b/c.txt" ) );
assertEquals( "C:/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "C:/a/b/c.txt" ) );
assertEquals( "//server/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "//server/a/b/c.txt" ) );
assertEquals( "~/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~/a/b/c.txt" ) );
assertEquals( "~user/a/b", RepositoryFilenameUtils.getFullPathNoEndSeparator( "~user/a/b/c.txt" ) );
}
public void testGetName() {
assertEquals( null, RepositoryFilenameUtils.getName( null ) );
assertEquals( "noseperator.inthispath", RepositoryFilenameUtils.getName( "noseperator.inthispath" ) );
assertEquals( "c.txt", RepositoryFilenameUtils.getName( "a/b/c.txt" ) );
assertEquals( "c", RepositoryFilenameUtils.getName( "a/b/c" ) );
assertEquals( "", RepositoryFilenameUtils.getName( "a/b/c/" ) );
assertEquals( "c", RepositoryFilenameUtils.getName( "a\\b\\c" ) );
}
public void testGetBaseName() {
assertEquals( null, RepositoryFilenameUtils.getBaseName( null ) );
assertEquals( "noseperator", RepositoryFilenameUtils.getBaseName( "noseperator.inthispath" ) );
assertEquals( "c", RepositoryFilenameUtils.getBaseName( "a/b/c.txt" ) );
assertEquals( "c", RepositoryFilenameUtils.getBaseName( "a/b/c" ) );
assertEquals( "", RepositoryFilenameUtils.getBaseName( "a/b/c/" ) );
assertEquals( "c", RepositoryFilenameUtils.getBaseName( "a\\b\\c" ) );
assertEquals( "file.txt", RepositoryFilenameUtils.getBaseName( "file.txt.bak" ) );
}
public void testGetExtension() {
assertEquals( null, RepositoryFilenameUtils.getExtension( null ) );
assertEquals( "ext", RepositoryFilenameUtils.getExtension( "file.ext" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "README" ) );
assertEquals( "com", RepositoryFilenameUtils.getExtension( "domain.dot.com" ) );
assertEquals( "jpeg", RepositoryFilenameUtils.getExtension( "image.jpeg" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "a.b/c" ) );
assertEquals( "txt", RepositoryFilenameUtils.getExtension( "a.b/c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "a/b/c" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "a.b\\c" ) );
assertEquals( "txt", RepositoryFilenameUtils.getExtension( "a.b\\c.txt" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "a\\b\\c" ) );
assertEquals( "", RepositoryFilenameUtils.getExtension( "C:\\temp\\foo.bar\\README" ) );
assertEquals( "ext", RepositoryFilenameUtils.getExtension( "../filename.ext" ) );
}
public void testRemoveExtension() {
assertEquals( null, RepositoryFilenameUtils.removeExtension( null ) );
assertEquals( "file", RepositoryFilenameUtils.removeExtension( "file.ext" ) );
assertEquals( "README", RepositoryFilenameUtils.removeExtension( "README" ) );
assertEquals( "domain.dot", RepositoryFilenameUtils.removeExtension( "domain.dot.com" ) );
assertEquals( "image", RepositoryFilenameUtils.removeExtension( "image.jpeg" ) );
assertEquals( "a.b/c", RepositoryFilenameUtils.removeExtension( "a.b/c" ) );
assertEquals( "a.b/c", RepositoryFilenameUtils.removeExtension( "a.b/c.txt" ) );
assertEquals( "a/b/c", RepositoryFilenameUtils.removeExtension( "a/b/c" ) );
assertEquals( "a.b\\c", RepositoryFilenameUtils.removeExtension( "a.b\\c" ) );
assertEquals( "a.b\\c", RepositoryFilenameUtils.removeExtension( "a.b\\c.txt" ) );
assertEquals( "a\\b\\c", RepositoryFilenameUtils.removeExtension( "a\\b\\c" ) );
assertEquals( "C:\\temp\\foo.bar\\README", RepositoryFilenameUtils.removeExtension( "C:\\temp\\foo.bar\\README" ) );
assertEquals( "../filename", RepositoryFilenameUtils.removeExtension( "../filename.ext" ) );
}
// -----------------------------------------------------------------------
public void testEquals() {
assertEquals( true, RepositoryFilenameUtils.equals( null, null ) );
assertEquals( false, RepositoryFilenameUtils.equals( null, "" ) );
assertEquals( false, RepositoryFilenameUtils.equals( "", null ) );
assertEquals( true, RepositoryFilenameUtils.equals( "", "" ) );
assertEquals( true, RepositoryFilenameUtils.equals( "file.txt", "file.txt" ) );
assertEquals( false, RepositoryFilenameUtils.equals( "file.txt", "FILE.TXT" ) );
assertEquals( false, RepositoryFilenameUtils.equals( "a\\b\\file.txt", "a/b/file.txt" ) );
}
// -----------------------------------------------------------------------
public void testEqualsNormalized() {
assertEquals( true, RepositoryFilenameUtils.equalsNormalized( null, null ) );
assertEquals( false, RepositoryFilenameUtils.equalsNormalized( null, "" ) );
assertEquals( false, RepositoryFilenameUtils.equalsNormalized( "", null ) );
assertEquals( true, RepositoryFilenameUtils.equalsNormalized( "", "" ) );
assertEquals( true, RepositoryFilenameUtils.equalsNormalized( "file.txt", "file.txt" ) );
assertEquals( false, RepositoryFilenameUtils.equalsNormalized( "file.txt", "FILE.TXT" ) );
assertEquals( true, RepositoryFilenameUtils.equalsNormalized( "a\\b\\file.txt", "a/b/file.txt" ) );
assertEquals( false, RepositoryFilenameUtils.equalsNormalized( "a/b/", "a/b" ) );
}
// -----------------------------------------------------------------------
public void testIsExtension() {
assertEquals( false, RepositoryFilenameUtils.isExtension( null, (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", (String) null ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file.txt", "txt" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", "rtf" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a/b/file.txt", "txt" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", "rtf" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b/file.txt", "txt" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", "rtf" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", "txt" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", "rtf" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", (String) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", "" ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", "txt" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", "rtf" ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", "TXT" ) );
}
public void testIsExtensionArray() {
assertEquals( false, RepositoryFilenameUtils.isExtension( null, (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", (String[]) null ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", new String[0] ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file.txt", new String[] { "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", new String[] { "rtf" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", new String[] { "rtf", "" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file.txt", new String[] { "rtf", "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new String[0] ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new String[] { "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new String[] { "rtf" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new String[] { "rtf", "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new String[0] ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new String[] { "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new String[] { "rtf" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new String[] { "rtf", "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new String[0] ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new String[] { "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new String[] { "rtf" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new String[] { "rtf", "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", (String[]) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[0] ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[] { "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[] { "rtf" } ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[] { "rtf", "txt" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[] { "TXT" } ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new String[] { "TXT", "RTF" } ) );
}
public void testIsExtensionCollection() {
assertEquals( false, RepositoryFilenameUtils.isExtension( null, (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", (Collection) null ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", new ArrayList() ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file.txt", new ArrayList( Arrays
.asList( new String[] { "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file", new ArrayList( Arrays.asList( new String[] {
"rtf", "" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "file.txt", new ArrayList( Arrays.asList( new String[] {
"rtf", "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new ArrayList() ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new ArrayList( Arrays
.asList( new String[] { "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a/b/file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf", "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new ArrayList() ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new ArrayList( Arrays
.asList( new String[] { "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b/file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf", "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new ArrayList() ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a\\b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf", "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", (Collection) null ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList() ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf" } ) ) ) );
assertEquals( true, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "rtf", "txt" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "TXT" } ) ) ) );
assertEquals( false, RepositoryFilenameUtils.isExtension( "a.b\\file.txt", new ArrayList( Arrays
.asList( new String[] { "TXT", "RTF" } ) ) ) );
}
public void testMatch() {
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( null, "Foo" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "Foo", null ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( null, null ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo", "Foo" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "", "" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo", "Fo*" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo", "Fo?" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo Bar and Catflap", "Fo*" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "New Bookmarks", "N?w ?o?k??r?s" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "Foo", "Bar" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo Bar Foo", "F*o Bar*" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Adobe Acrobat Installer", "Ad*er" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo", "*Foo" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "BarFoo", "*Foo" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "Foo", "Foo*" ) );
assertEquals( true, RepositoryFilenameUtils.wildcardMatch( "FooBar", "Foo*" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "FOO", "*Foo" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "BARFOO", "*Foo" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "FOO", "Foo*" ) );
assertEquals( false, RepositoryFilenameUtils.wildcardMatch( "FOOBAR", "Foo*" ) );
}
private void assertMatch( String text, String wildcard, boolean expected ) {
assertEquals( text + " " + wildcard, expected, RepositoryFilenameUtils.wildcardMatch( text, wildcard ) );
}
// A separate set of tests, added to this batch
public void testMatch2() {
assertMatch( "log.txt", "log.txt", true );
assertMatch( "log.txt1", "log.txt", false );
assertMatch( "log.txt", "log.txt*", true );
assertMatch( "log.txt", "log.txt*1", false );
assertMatch( "log.txt", "*log.txt*", true );
assertMatch( "log.txt", "*.txt", true );
assertMatch( "txt.log", "*.txt", false );
assertMatch( "config.ini", "*.ini", true );
assertMatch( "config.txt.bak", "con*.txt", false );
assertMatch( "log.txt9", "*.txt?", true );
assertMatch( "log.txt", "*.txt?", false );
assertMatch( "progtestcase.java~5~", "*test*.java~*~", true );
assertMatch( "progtestcase.java;5~", "*test*.java~*~", false );
assertMatch( "progtestcase.java~5", "*test*.java~*~", false );
assertMatch( "log.txt", "log.*", true );
assertMatch( "log.txt", "log?*", true );
assertMatch( "log.txt12", "log.txt??", true );
assertMatch( "log.log", "log**log", true );
assertMatch( "log.log", "log**", true );
assertMatch( "log.log", "log.**", true );
assertMatch( "log.log", "**.log", true );
assertMatch( "log.log", "**log", true );
assertMatch( "log.log", "log*log", true );
assertMatch( "log.log", "log*", true );
assertMatch( "log.log", "log.*", true );
assertMatch( "log.log", "*.log", true );
assertMatch( "log.log", "*log", true );
assertMatch( "log.log", "*log?", false );
assertMatch( "log.log", "*log?*", true );
assertMatch( "log.log.abc", "*log?abc", true );
assertMatch( "log.log.abc.log.abc", "*log?abc", true );
assertMatch( "log.log.abc.log.abc.d", "*log?abc?d", true );
}
@Test
public void testEscape() {
List<Character> emptyList = Collections.emptyList();
// null name
try {
RepositoryFilenameUtils.escape( null, emptyList );
fail();
} catch ( IllegalArgumentException e ) {
// passed
}
// null reservedChars
try {
RepositoryFilenameUtils.escape( "hello", null );
fail();
} catch ( IllegalArgumentException e ) {
// passed
}
// empty list
assertEquals( "hello", RepositoryFilenameUtils.escape( "hello", emptyList ) );
// nothing to escape
assertEquals( "hello", RepositoryFilenameUtils.escape( "hello", Arrays.asList( new Character[] { '/' } ) ) );
// something to escape
assertEquals( "h%65llo", RepositoryFilenameUtils.escape( "hello", Arrays.asList( new Character[] { 'e' } ) ) );
// % in name
assertEquals( "hel%25lo", RepositoryFilenameUtils.escape( "hel%lo", emptyList ) );
// ignore non-ascii
assertEquals( "helloン", RepositoryFilenameUtils.escape( "helloン", emptyList ) );
}
@Test
public void testUnescape() {
// null name
try {
RepositoryFilenameUtils.unescape( null );
fail();
} catch ( IllegalArgumentException e ) {
// passed
}
// nothing to unescape
assertEquals( "hello", RepositoryFilenameUtils.unescape( "hello" ) );
// something to unescape
assertEquals( "hello", RepositoryFilenameUtils.unescape( "h%65llo" ) );
// % in name
assertEquals( "hel%lo", RepositoryFilenameUtils.unescape( "hel%25lo" ) );
// ignore non-ascii
assertEquals( "helloン", RepositoryFilenameUtils.unescape( "helloン" ) );
}
}