/* * 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.name; import junit.framework.TestCase; import org.exoplatform.services.jcr.datamodel.QPath; import org.exoplatform.services.jcr.impl.core.JCRName; import org.exoplatform.services.jcr.impl.core.JCRPath; import org.exoplatform.services.jcr.impl.core.LocationFactory; import org.exoplatform.services.jcr.impl.core.NamespaceRegistryImpl; import javax.jcr.RepositoryException; /** * Created by The eXo Platform SAS. * * @author <a href="mailto:gennady.azarenkov@exoplatform.com">Gennady Azarenkov</a> * @version $Id: TestJCRPath.java 11907 2008-03-13 15:36:21Z ksm $ */ public class TestJCRPath extends TestCase { private LocationFactory factory; private NamespaceRegistryImpl namespaceRegistry; public void setUp() throws Exception { if (factory == null) { namespaceRegistry = new NamespaceRegistryImpl(); factory = new LocationFactory(namespaceRegistry); } } public void testCreateRoot() throws Exception { JCRPath path = factory.createRootLocation(); assertEquals("/", path.getAsString(false)); assertEquals("/", path.getAsString(true)); assertEquals(1, path.getIndex()); assertEquals("", path.getName().getName()); } public void testCreateName() throws Exception { JCRName name = factory.parseJCRName("jcr:test"); assertEquals("jcr:test", name.getAsString()); assertEquals("test", name.getName()); assertEquals(namespaceRegistry.getNamespaceURIByPrefix("jcr"), name.getNamespace()); assertEquals("jcr", name.getPrefix()); assertEquals("[" + namespaceRegistry.getNamespaceURIByPrefix("jcr") + "]test", name.getInternalName() .getAsString()); JCRName name1 = factory.createJCRName(name.getInternalName()); assertTrue(name.equals(name1)); } public void testParsePath() throws Exception { JCRPath path = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2"); assertEquals("node2", path.getName().getName()); assertEquals(1, path.getIndex()); assertEquals("node2", path.getInternalPath().getName().getName()); assertEquals(3, path.getDepth()); assertEquals("/jcr:node/node1[2]/exo:node2", path.getAsString(false)); assertEquals("/jcr:node[1]/node1[2]/exo:node2[1]", path.getAsString(true)); // with index assertTrue(path.equals(factory.parseAbsPath("/jcr:node/node1[2]/exo:node2[1]"))); assertFalse(path.equals(factory.parseAbsPath("/jcr:node/node1[1]/exo:node2[1]"))); JCRPath path1 = factory.parseAbsPath("/jcr:node[3]"); assertEquals(3, path1.getIndex()); } public void testCreatePath() throws Exception { JCRPath path = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2"); JCRPath parent = path.makeParentPath(); assertEquals("/jcr:node/node1[2]", parent.getAsString(false)); assertTrue(path.isDescendantOf(parent, true)); assertTrue(path.isDescendantOf(parent.makeParentPath(), false)); assertEquals("/jcr:node/node1[2]/exo:node2", factory.createJCRPath(parent, "exo:node2").getAsString(false)); assertEquals("/jcr:node/node1[2]/exo:node2/node3", factory.createJCRPath(parent, "exo:node2/node3").getAsString( false)); assertTrue(path.equals(factory.createJCRPath(parent, "exo:node2"))); QPath qpath = path.getInternalPath(); assertTrue(path.equals(factory.createJCRPath(qpath))); JCRPath sibs = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2[2]"); assertTrue(path.isSameNameSibling(sibs)); path = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2"); assertEquals("/jcr:node", path.makeAncestorPath(2).getAsString(false)); } public void testEqualsJCRPath() throws Exception { JCRPath path = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2"); assertFalse(path.equals(null)); assertFalse(path.equals(new Object())); } public void testEqualsJCRName() throws RepositoryException { JCRName name = factory.parseAbsPath("/jcr:node/node1[2]/exo:node2").getName(); assertFalse(name.equals(null)); assertFalse(name.equals(new Object())); } }