/* $Id: TestCollaborationsHelper.java 18401 2010-05-19 16:22:55Z bobtarling $
*****************************************************************************
* Copyright (c) 2009-2010 Contributors - see 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:
* Tom Morris
* Bob Tarling
*****************************************************************************
*
* Some portions of this file was previously release using the BSD License:
*/
// Copyright (c) 1996-2007 The Regents of the University of California. All
// Rights Reserved. Permission to use, copy, modify, and distribute this
// software and its documentation without fee, and without a written
// agreement is hereby granted, provided that the above copyright notice
// and this paragraph appear in all copies. This software program and
// documentation are copyrighted by The Regents of the University of
// California. The software program and documentation are supplied "AS
// IS", without any accompanying services from The Regents. The Regents
// does not warrant that the operation of the program will be
// uninterrupted or error-free. The end-user understands that the program
// was developed for research purposes and is advised not to rely
// exclusively on the program for any reason. IN NO EVENT SHALL THE
// UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
// SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS,
// ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF
// THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY
// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE
// PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF
// CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT,
// UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
// $header$
package org.argouml.model;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import junit.framework.TestCase;
/**
* @since Oct 10, 2002
* @author jaap.branderhorst@xs4all.nl
*/
public class TestCollaborationsHelper extends TestCase {
/**
* Constructor for TestCollaborationsHelper.
*
* @param arg0 is the name of the test case.
*/
public TestCollaborationsHelper(String arg0) {
super(arg0);
}
@Override
protected void setUp() throws Exception {
super.setUp();
InitializeModel.initializeDefault();
// new InitProfileSubsystem().init();
}
/**
* Test for the metamodel name.
*/
public void testGetMetaModelName() {
CheckUMLModelHelper.metaModelNameCorrect(
Model.getCollaborationsFactory(),
TestCollaborationsFactory.getAllModelElements());
}
/**
* Test if the stereotype is valid.
*/
public void testIsValidStereoType() {
CheckUMLModelHelper.isValidStereoType(
Model.getCollaborationsFactory(),
TestCollaborationsFactory.getAllModelElements());
}
/**
* Test allAvailableFeatures and allAvailableContents including
* inheritance from generalizations.
*/
public void testAllAvailable() {
Object model = Model.getModelManagementFactory().createModel();
Object collab =
Model.getCollaborationsFactory().buildCollaboration(model);
Object class1 = Model.getCoreFactory().buildClass(model);
Object class2 = Model.getCoreFactory().buildClass(model);
Object intType = Model.getCoreFactory().buildDataType("int", model);
Object attr = Model.getCoreFactory().buildAttribute2(class2, intType);
Object class3 = Model.getCoreFactory().buildClass(model);
Object op = Model.getCoreFactory().buildOperation(class3, intType);
Object class4 = Model.getCoreFactory().buildClass(class3);
Object role1 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Model.getCollaborationsHelper().addBase(role1, class1);
Object role2 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Model.getCollaborationsHelper().addBase(role2, class2);
Object role3 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Model.getCollaborationsHelper().addBase(role3, class3);
Object gen = Model.getCoreFactory().buildGeneralization(role3, role2);
assertEquals("Didn't find all classifier roles", 3,
Model.getCollaborationsHelper()
.getAllClassifierRoles(collab).size());
Collection features =
Model.getCollaborationsHelper().allAvailableFeatures(role1);
assertEquals("Wrong number of features", 0, features.size());
features =
Model.getCollaborationsHelper().allAvailableFeatures(role2);
assertEquals("Wrong number of features", 1, features.size());
features =
Model.getCollaborationsHelper().allAvailableFeatures(role3);
assertEquals("Wrong number of features", 2, features.size());
assertTrue("Didn't find expected attribute", features.contains(attr));
assertTrue("Didn't find expected operation", features.contains(op));
assertFalse("Found unexpected nested class in features",
features.contains(class4));
Collection contents =
Model.getCollaborationsHelper().allAvailableContents(role3);
assertEquals("Wrong number of elements in contents", 1,
contents.size());
assertTrue("Didn't find expected nested class",
contents.contains(class4));
Model.getUmlFactory().delete(model);
}
/**
* Test various forms of addBase/setBase for ClassifierRole.
*/
public void testAddBases() {
Object model = Model.getModelManagementFactory().createModel();
Object collab =
Model.getCollaborationsFactory().buildCollaboration(model);
Object class1 = Model.getCoreFactory().buildClass(model);
Object class2 = Model.getCoreFactory().buildClass(model);
Object assoc = Model.getCoreFactory().buildAssociation(class1, class2);
Object role1 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Object role2 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Model.getCollaborationsHelper().addBase(role1, class1);
Model.getCoreHelper().setName(role1, "role1");
Model.getCoreHelper().setName(role2, "role2");
// This should work now that they both have names
Model.getCollaborationsHelper().addBase(role2, class1);
Model.getCollaborationsHelper().setBases(role2, Collections.emptySet());
assertEquals("Wrong number of bases", 0, Model.getFacade().getBases(
role2).size());
Collection bases = new ArrayList();
bases.add(class1);
bases.add(class2);
Model.getCollaborationsHelper().setBases(role2, bases);
Collection fetchedBases = Model.getFacade().getBases(role2);
assertEquals("Wrong number of bases", 2, fetchedBases.size());
assertTrue("Didn't find expected base", fetchedBases.contains(class1));
assertTrue("Didn't find expected base", fetchedBases.contains(class2));
Model.getCollaborationsHelper().removeBase(role2, class1);
fetchedBases = Model.getFacade().getBases(role2);
assertEquals("Wrong number of bases", 1, fetchedBases.size());
assertFalse("Base wasn't removed", fetchedBases.contains(class1));
Model.getUmlFactory().delete(model);
}
/**
* Test AssociationRoles.
*/
public void testAssociationRole() {
Object model = Model.getModelManagementFactory().createModel();
Object collab =
Model.getCollaborationsFactory().buildCollaboration(model);
Object class1 = Model.getCoreFactory().buildClass(model);
Object class2 = Model.getCoreFactory().buildClass(model);
Object assoc1 = Model.getCoreFactory().buildAssociation(class1, class2);
Object assoc2 = Model.getCoreFactory().buildAssociation(class1, class2);
Object role1 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
assertNotNull(role1);
assertEquals("found wrong number of possible bases", 2, Model
.getCollaborationsHelper().getAllPossibleBases(role1).size());
Model.getCollaborationsHelper().addBase(role1, class1);
Object role2 =
Model.getCollaborationsFactory().buildClassifierRole(collab);
Model.getCollaborationsHelper().addBase(role2, class2);
assertEquals("Found wrong number of possible association roles", 2,
Model.getCollaborationsHelper().getAllPossibleAssociationRoles(
role1).size());
Object assocRole =
Model.getCollaborationsFactory().buildAssociationRole(role1, role2);
assertNotNull(assocRole);
assertEquals("getAssocationRole returned wrong result", assocRole,
Model.getCollaborationsHelper()
.getAssociationRole(role1, role2));
assertEquals("Didn't find connected classifier role", 1, Model
.getCollaborationsHelper().getClassifierRoles(role1).size());
Model.getUmlFactory().delete(model);
}
/**
* Test methods for Interactions.
*/
public void testInteractions() {
Object model = Model.getModelManagementFactory().createModel();
Object collab =
Model.getCollaborationsFactory().buildCollaboration(model);
Object interaction = Model.getCollaborationsFactory()
.createInteraction();
Model.getCollaborationsHelper().setContext(interaction, collab);
Model.getCollaborationsFactory().buildInteraction(collab);
assertEquals(2, Model.getFacade().getInteractions(collab).size());
assertTrue(Model.getFacade().getInteractions(collab).contains(
interaction));
Object msg1 = Model.getCollaborationsFactory().createMessage();
assertNotNull(msg1);
Model.getCollaborationsHelper().addMessage(interaction, msg1);
assertTrue(Model.getFacade().getMessages(interaction).contains(msg1));
Model.getCollaborationsHelper().removeInteraction(collab,
interaction);
assertEquals(1, Model.getFacade().getInteractions(collab).size());
}
}