/* * Copyright (C) 2009 eXo Platform SAS. * * This 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 software 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 software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.core; import junit.framework.TestCase; import org.exoplatform.services.jcr.datamodel.QPathEntry; import javax.jcr.RepositoryException; /** * Created by The eXo Platform SAS. * * @author Anatoliy Bazko */ public class TestLocationFactory extends TestCase { private static int MAX_CREATE_PATH_TIME = 100000; private static String testJCRPathElementValid[][] = {{"jcr:name", "jcr", "name"}, {"jcr:name[30]", "jcr", "name"}, {"na me[1]", "", "na me"}, {"...", "", "..."}, {"123", "", "123"}}; private static String testJCRPathElementInvalid[] = {" na m e", "name[0]", " name[9]", "\n", "ddr:df:", "", "xml:na*me", "[1]", " ", "ddd:..", "&io:lala"}; private static String testJCRPathValid[] = {"..", "jcr:ig[2]/aaa", "v/d/...", "/path", "/vv/fff", "ff", "/", "..", "'", "\"", ".'", "'.","'\""}; private static String testJCRPathInvalid[] = {"/.:./uuu", "/ ", "/./xml:name[0]", "xxx//fff", "//", " sdfas/", "", ":", "[", "]", "x*", "|", " ","|fff","ff|f"}; private LocationFactory factory; private NamespaceRegistryImpl namespaceRegistry; @Override public void setUp() throws Exception { if (factory == null) { namespaceRegistry = new NamespaceRegistryImpl(); factory = new LocationFactory(namespaceRegistry); } } /** * Test method for * {@link org.exoplatform.services.jcr.impl.core.LocationFactory#parseJCRPath(java.lang.String)} . */ public void testParseValidJCRPath() { String testPath; for (String element : testJCRPathValid) { testPath = element; try { JCRPath path = factory.parseJCRPath(testPath); assertTrue(testPath.equals(path.getAsString(false))); } catch (RepositoryException e) { fail("exception should not have been thrown for path '" + testPath + "'"); } } } public void testParseInvalidJCRPath() { String testPath; for (String element : testJCRPathInvalid) { testPath = element; try { factory.parseJCRPath(testPath); fail("exception should have been thrown for path '" + testPath + "'"); } catch (RepositoryException e) { } } } /** * Test method for * {@link org.exoplatform.services.jcr.impl.core.LocationFactory#parseJCRName(java.lang.String)} . */ public void testParseValidJCRName() { String testPathElement; String testPrefix; String testName; for (String[] element : testJCRPathElementValid) { testPathElement = element[0]; testPrefix = element[1]; testName = element[2]; try { JCRName name = factory.parseJCRName(testPathElement); assertTrue(testPrefix.equals(name.getPrefix())); assertTrue(testName.equals(name.getName())); } catch (RepositoryException e) { fail("exception should not have been thrown"); } } } public void testParseInvalidJCRName() { String testPathElement; for (String element : testJCRPathElementInvalid) { testPathElement = element; try { factory.parseJCRName(testPathElement); fail("exception should have been thrown"); } catch (RepositoryException e) { } } } public void testCreateLongJCRPath() throws RepositoryException { for (int i = 1; i <= MAX_CREATE_PATH_TIME; i++) { factory .parseAbsPath("/jcr:namenamename/jcr:namenamename/jcr:namenamename/jcr:namenamename/jcr:namenamename/jcr:namenamename"); } } public void testCreateMiddleJCRPath() throws RepositoryException { for (int i = 1; i <= MAX_CREATE_PATH_TIME; i++) { factory.parseAbsPath("/jcr:namename/jcr:namenamename/jcr:namenamename"); } } public void testCreateShortJCRPath() throws RepositoryException { for (int i = 1; i <= MAX_CREATE_PATH_TIME; i++) { factory.parseAbsPath("/jcr:namenamename"); } } public void testFormatPathElement() throws RepositoryException { assertEquals("test", factory.formatPathElement(new QPathEntry("", "test", 0))); } public void testParsePathEntryWhenParsNameIsNull() { try { factory.parseJCRName(null); fail(); } catch (RepositoryException e) { } } public void testIsNotLocalName() { try { factory.parseJCRName(""); fail(); } catch (RepositoryException e) { } try { factory.parseJCRName(" "); fail(); } catch (RepositoryException e) { } } }