/*******************************************************************************
* Copyright (c) 2010-2014 SAP AG and others.
* 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:
* SAP AG - initial API and implementation
*******************************************************************************/
package org.eclipse.skalli.model;
import java.util.Arrays;
import java.util.Map;
import java.util.TreeSet;
import org.eclipse.skalli.testutil.AssertUtils;
import org.eclipse.skalli.testutil.PropertyTestUtil;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("nls")
public class ProjectTest {
@Test
public void testPropertyDefinitions() throws Exception {
Map<String, Object> values = PropertyTestUtil.getValues();
values.put(Project.PROPERTY_PROJECTID, "eclipse.skalli");
values.put(Project.PROPERTY_TEMPLATEID, "default");
values.put(Project.PROPERTY_PARENT_PROJECT, null);
values.put(Project.PROPERTY_NAME, "Skalli");
values.put(Project.PROPERTY_DESCRIPTION_FORMAT, "text");
values.put(Project.PROPERTY_DESCRIPTION, "The goal of the project is to build an extensible" +
" system for organizing projects.");
TreeSet<String> tags = new TreeSet<String>();
tags.add("springfield");
tags.add("cartoon");
values.put(Project.PROPERTY_LOGO_URL, "http://example.org/logo");
values.put(Project.PROPERTY_PHASE, "Gone Crazy!");
values.put(Project.PROPERTY_REGISTERED, System.currentTimeMillis());
values.put(Project.PROPERTY_SHORT_NAME, "ECLSKA");
Map<Class<?>, String[]> requiredProperties = PropertyTestUtil.getRequiredProperties();
PropertyTestUtil.checkPropertyDefinitions(Project.class, requiredProperties, values);
}
@Test
public void testGetOrConstructShortName() {
Project p = new Project();
p.setProjectId("hello.world");
p.setName("A simple Test Project");
Assert.assertEquals("AsTP", p.getOrConstructShortName());
p.setName("A very simple Test Project with an extremely long name that exceeds the limits");
Assert.assertEquals("AvsTPwaeln", p.getOrConstructShortName());
p.setName("A simple - Test Project");
Assert.assertEquals("AsTP", p.getOrConstructShortName());
p.setName("Project ()");
Assert.assertEquals("Project", p.getOrConstructShortName());
p.setName("TestProject");
Assert.assertEquals("TestProjec", p.getOrConstructShortName());
p.setName("Test(Project");
Assert.assertEquals("TestProjec", p.getOrConstructShortName());
p.setName("Test-Project");
Assert.assertEquals("TestProjec", p.getOrConstructShortName());
p.setName("$$()");
Assert.assertEquals("helloworld", p.getOrConstructShortName());
}
@Test
public void testSubProjects() throws Exception {
Project parent = new Project();
parent.setProjectId("parent");
Project child1 = new Project();
child1.setProjectId("foobar");
child1.setName("B");
Project child2 = new Project();
child2.setProjectId("bar");
child2.setName("C");
Project child3 = new Project();
child3.setProjectId("foo");
child3.setName("A");
Project child4 = new Project();
child4.setProjectId("foob");
child4.setName("A");
Project child5 = new Project();
child5.setProjectId("fo");
child5.setName("A");
parent.setFirstChild(child1);
child1.setNextSibling(child2);
child2.setNextSibling(child3);
child3.setNextSibling(child4);
child4.setNextSibling(child5);
AssertUtils.assertEquals("getSubProjects()",
Arrays.asList(child2, child5, child3, child4, child1),
parent.getSubProjects());
AssertUtils.assertEquals("getSubProjects(CompareByProjectId)",
Arrays.asList(child2, child5, child3, child4, child1),
parent.getSubProjects(new ByProjectIdComparator()));
AssertUtils.assertEquals("getSubProjects(CompareByProjectName)",
Arrays.asList(child5, child3, child4, child1, child2),
parent.getSubProjects(new ByProjectNameComparator()));
}
}