/** * Copyright (c) 2011 Cloudsmith Inc. and other contributors, as listed below. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Cloudsmith * */ package org.cloudsmith.geppetto.forge.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; import org.cloudsmith.geppetto.forge.v2.model.ModuleName; import org.junit.Test; public class ModuleNameTest extends AbstractForgeTest { private void assertFail(String name) { try { new ModuleName(name); fail("ModuleName should not accept: '" + name + '\''); } catch(IllegalArgumentException e) { } } private void assertOK(String name) { try { new ModuleName(name); } catch(IllegalArgumentException e) { fail("ModuleName should accept: '" + name + '\''); } } @Test public void attributes() { ModuleName name = new ModuleName("some-name"); assertEquals("Full name qualifier not set correctly", "some", name.getOwner()); assertEquals("Full name name, not set correctly", "name", name.getName()); assertEquals("Full name separator not set correctly", '-', name.getSeparator()); } @Test public void compareCaseInsensitive() { ModuleName name = new ModuleName("some-name"); assertEquals("Qualifier not case insensitive", 0, new ModuleName("Some-name").compareTo(name)); assertEquals("Name not case insensitive", 0, new ModuleName("some-Name").compareTo(name)); assertEquals("Combo not case insensitive", 0, new ModuleName("SOME-NAME").compareTo(name)); assertTrue("bad order", new ModuleName("good-name").compareTo(name) < 0); assertTrue("bad order", new ModuleName("xtra-name").compareTo(name) > 0); assertTrue("compare not case insensitive", new ModuleName("Good-Name").compareTo(name) < 0); assertTrue("compare not case insensitive", new ModuleName("Xtra-Name").compareTo(name) > 0); } @Test public void equalsCaseInsensitive() { ModuleName name = new ModuleName("some-name"); assertEquals("Qualifier not case insensitive", new ModuleName("Some-name"), name); assertEquals("Name not case insensitive", new ModuleName("some-Name"), name); assertEquals("Combo not case insensitive", new ModuleName("SOME-NAME"), name); } @Test public void equalsSeparatorInsensitive() { ModuleName name = new ModuleName("some-name"); assertEquals("ModuleName should not consider separator when comparing", new ModuleName("some/name"), name); } @Test public void forbiddenNames() { assertFail("owner-main"); assertFail("owner-settings"); } @Test public void nameSeparators() { assertOK("some-name"); assertOK("some/name"); assertFail("some.name"); assertFail("some#name"); assertFail("some$name"); assertFail("some%name"); } @Test public void nameWithCase() { assertOK("Upper-name"); assertOK("owner-Upper"); assertOK("some-name"); } @Test public void nameWithDigits() { assertOK("1st-name"); assertFail("owner-1st"); assertOK("some123-name123"); } @Test public void nameWithUnderscore() { assertFail("_under-name"); assertFail("owner-_under"); assertOK("some123-name_123"); } @Test public void nonAsciiNames() { assertFail("börje-name"); assertFail("owner-smörobröd"); } }