/** * Copyright (C) 2009 STMicroelectronics * * This file is part of "Mind Compiler" 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 3 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 Lesser General Public License for more * details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Contact: mind@ow2.org * * Authors: Matthieu Leclercq * Contributors: */ package org.ow2.mind; import static org.ow2.mind.PathHelper.fullyQualifiedNameToAbsolute; import static org.ow2.mind.PathHelper.fullyQualifiedNameToDirName; import static org.ow2.mind.PathHelper.fullyQualifiedNameToPath; import static org.ow2.mind.PathHelper.getExtension; import static org.ow2.mind.PathHelper.getParent; import static org.ow2.mind.PathHelper.isRelative; import static org.ow2.mind.PathHelper.isValid; import static org.ow2.mind.PathHelper.packageNameToAbsolute; import static org.ow2.mind.PathHelper.packageNameToDirName; import static org.ow2.mind.PathHelper.removeExtension; import static org.ow2.mind.PathHelper.replaceExtension; import static org.ow2.mind.PathHelper.toAbsolute; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import org.ow2.mind.PathHelper.InvalidRelativPathException; import org.testng.annotations.Test; public class PathHelperTest { /** * Test method for {@link PathHelper#isValid(String)}. */ @Test(groups = {"functional"}) public void testIsValid() { assertTrue(isValid("bar.txt")); assertTrue(isValid("foo/bar.txt")); assertTrue(isValid("./foo/bar.txt")); assertTrue(isValid("./../foo/bar.txt")); assertTrue(isValid("/foo/bar.txt")); assertFalse(isValid("foo//bar.txt")); assertFalse(isValid("/../foo/bar.txt")); } /** * Test method for {@link PathHelper#isRelative(String)}. */ @Test(groups = {"functional"}) public void testIsRelative() { assertTrue(isRelative("bar.txt")); assertTrue(isRelative("./bar.txt")); assertTrue(isRelative("foo/bar.txt")); assertTrue(isRelative("./foo/bar.txt")); assertTrue(isRelative("./../foo/bar.txt")); assertFalse(isRelative("/foo/bar.txt")); } /** * Test method for {@link PathHelper#getParent(String)}. */ @Test(groups = {"functional"}) public void testGetParent() throws Exception { assertEquals("foo", getParent("foo/bar.txt")); assertEquals("foo/toto", getParent("foo/toto/bar.txt")); assertEquals("", getParent("bar.txt")); } /** * Test method for {@link PathHelper#getExtension(String)}. */ @Test(groups = {"functional"}) public void testGetExtension() { assertEquals("txt", getExtension("bar.txt")); assertEquals("txt", getExtension("./bar.txt")); assertEquals("txt", getExtension("foo/bar.txt")); assertEquals("txt", getExtension("./foo/bar.txt")); assertEquals("txt", getExtension("./../foo/bar.txt")); assertNull(getExtension("bar")); assertNull(getExtension("foo.1/bar")); } /** * Test method for {@link PathHelper#removeExtension(String)}. */ @Test(groups = {"functional"}) public void testRemoveExtension() { assertEquals("bar", removeExtension("bar.txt")); assertEquals("./bar", removeExtension("./bar.txt")); assertEquals("foo/bar", removeExtension("foo/bar.txt")); assertEquals("./foo/bar", removeExtension("./foo/bar.txt")); assertEquals("./../foo/bar", removeExtension("./../foo/bar.txt")); assertEquals("bar", removeExtension("bar")); assertEquals("./bar", removeExtension("./bar")); assertEquals("foo.1/bar", removeExtension("foo.1/bar")); } /** * Test method for {@link PathHelper#replaceExtension(String, String)} . */ @Test(groups = {"functional"}) public void testReplaceExtension() { assertEquals("bar.c", replaceExtension("bar.txt", "c")); assertEquals("./bar.c", replaceExtension("./bar.txt", "c")); assertEquals("foo/bar.c", replaceExtension("foo/bar.txt", "c")); assertEquals("./foo/bar.c", replaceExtension("./foo/bar.txt", "c")); assertEquals("./../foo/bar.c", replaceExtension("./../foo/bar.txt", "c")); assertEquals("bar.c", replaceExtension("bar", "c")); assertEquals("./bar.c", replaceExtension("./bar", "c")); assertEquals("foo.1/bar.c", replaceExtension("foo.1/bar", "c")); assertEquals("bar.c", replaceExtension("bar.txt", ".c")); } /** * Test method for {@link PathHelper#toAbsolute(String, String)}. * * @throws Exception */ @Test(groups = {"functional"}) public void testToAbsolute() throws Exception { assertEquals("foo/bar.txt", toAbsolute("foo", "./bar.txt")); assertEquals("foo/bar.txt", toAbsolute("foo", "bar.txt")); assertEquals("foo/bar.txt", toAbsolute("foo/", "./bar.txt")); assertEquals("foo/toto/bar.txt", toAbsolute("foo", "toto/bar.txt")); assertEquals("foo/toto/bar.txt", toAbsolute("foo", "./toto/bar.txt")); assertEquals("foo/toto/bar.txt", toAbsolute("foo/toto", "bar.txt")); assertEquals("foo/toto/bar.txt", toAbsolute("foo/toto", "./bar.txt")); assertEquals("foo/titi/bar.txt", toAbsolute("foo/toto", "../titi/bar.txt")); assertEquals("bar.txt", toAbsolute("foo/", "../bar.txt")); assertEquals("bar.txt", toAbsolute("foo/", "./../bar.txt")); assertEquals("toto/bar.txt", toAbsolute("foo/", "../toto/bar.txt")); assertEquals("toto/bar.txt", toAbsolute("foo/", "./../toto/bar.txt")); assertEquals("toto/bar.txt", toAbsolute("foo/titi", "../../toto/bar.txt")); testFaultyToAbsolute("foo", "../../bar.txt"); testFaultyToAbsolute("foo", "./../../bar.txt"); testFaultyToAbsolute("/", "../bar.txt"); testFaultyToAbsolute("", "../bar.txt"); } private void testFaultyToAbsolute(final String dirName, final String path) { try { toAbsolute(dirName, path); fail(); } catch (final InvalidRelativPathException e) { // OK } } /** * Test method for {@link PathHelper#fullyQualifiedNameToDirName(String)} . */ @Test(groups = {"functional"}) public void testFullyQualifiedNameToDirName() { assertEquals("/foo", fullyQualifiedNameToDirName("foo.bar")); assertEquals("/foo/toto", fullyQualifiedNameToDirName("foo.toto.bar")); assertEquals("/", fullyQualifiedNameToDirName("bar")); } /** * Test method for {@link PathHelper#packageNameToDirName(String)} . */ @Test(groups = {"functional"}) public void testPackageNameToDirName() { assertEquals("/foo/bar", packageNameToDirName("foo.bar")); assertEquals("/foo/toto/bar", packageNameToDirName("foo.toto.bar")); assertEquals("/bar", packageNameToDirName("bar")); } /** * Test method for * {@link PathHelper#fullyQualifiedNameToAbsolute(String, String)} . * * @throws Exception */ @Test(groups = {"functional"}) public void testFullyQualifiedNameToAbsolute() throws Exception { assertEquals("/foo/bar.txt", fullyQualifiedNameToAbsolute("foo.toto", "./bar.txt")); assertEquals("/foo/titi/bar.txt", fullyQualifiedNameToAbsolute("foo.toto", "./titi/bar.txt")); assertEquals("/bar.txt", fullyQualifiedNameToAbsolute("foo.toto", "../bar.txt")); assertEquals( "/hello/cli_src/client.c", fullyQualifiedNameToAbsolute("hello.client.Client", "../cli_src/client.c")); } /** * Test method for {@link PathHelper#packageNameToAbsolute(String, String)} . * * @throws Exception */ @Test(groups = {"functional"}) public void testPackageNameToAbsolute() throws Exception { assertEquals("/foo/toto/bar.txt", packageNameToAbsolute("foo.toto", "./bar.txt")); assertEquals("/foo/toto/titi/bar.txt", packageNameToAbsolute("foo.toto", "./titi/bar.txt")); assertEquals("/bar.txt", packageNameToAbsolute("foo", "../bar.txt")); } /** * Test method for {@link PathHelper#fullyQualifiedNameToPath(String, String)} * . */ @Test(groups = {"functional"}) public void testFullyQualifiedNameToPath() { assertEquals("/foo/bar.adl", fullyQualifiedNameToPath("foo.bar", "adl")); assertEquals("/foo/bar.adl", fullyQualifiedNameToPath("foo.bar", ".adl")); assertEquals("/foo/bar", fullyQualifiedNameToPath("foo.bar", null)); } }