blob: b5d57983cfa5271cda65165e0358bbee5c1d13b0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2009 IBM Corporation 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.internal.ds.tests;
import org.eclipse.pde.internal.core.text.IDocumentElementNode;
import org.eclipse.pde.internal.ds.core.IDSComponent;
import org.eclipse.pde.internal.ds.core.IDSConstants;
import org.eclipse.pde.internal.ds.core.IDSDocumentFactory;
import org.eclipse.pde.internal.ds.core.IDSObject;
import org.eclipse.pde.internal.ds.core.IDSProvide;
import org.eclipse.pde.internal.ds.core.IDSService;
public class DSServiceTestCase extends AbstractDSModelTestCase {
/**
* Tests a service component with all Attributes and Child values
*/
public void testAddCompleteService() {
StringBuffer buffer = new StringBuffer();
buffer.append("<service servicefactory=\"true\" >");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable\">");
buffer.append("</provide>");
buffer.append(LF);
buffer.append("</service>");
setXMLContents(buffer, LF);
load();
IDSObject component = fModel.getDSComponent();
assertTrue(component.getChildCount() == 1);
IDocumentElementNode child = component.getChildAt(0);
assertTrue(child instanceof IDSService);
IDSService service = (IDSService) child;
assertTrue(service.getServiceFactory() == true);
assertTrue(child.getChildCount() == 1);
IDSProvide[] providedServices = service.getProvidedServices();
IDSProvide provide = providedServices[0];
String interface1 = provide.getInterface();
assertTrue(interface1.equals("java.lang.Runnable"));
service.setServiceFactory(false);
String string = fModel.getDSComponent().toString();
assertTrue(string.indexOf("servicefactory=\"false\"") != -1);
assertTrue(service.getServiceFactory() == false);
assertEquals(service.getName(), IDSConstants.ELEMENT_SERVICE);
}
/**
* Tests a service component with multiple Childs
*/
public void testMultipleProvideService() {
StringBuffer buffer = new StringBuffer();
buffer.append("<service>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable1\"/>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable2\"/>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable3\"/>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable4\"/>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable5\"/>");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable6\"/> ");
buffer.append("</service>");
setXMLContents(buffer, LF);
load();
IDSObject component = fModel.getDSComponent();
assertTrue(component.getChildCount() == 1);
IDocumentElementNode child = component.getChildAt(0);
assertTrue(child instanceof IDSService);
assertTrue(child.getChildCount() == 6);
for (int i = 0; i < 6; i++) {
IDocumentElementNode grandChild = child.getChildAt(i);
IDSProvide provide = (IDSProvide) grandChild;
String interface1 = provide.getInterface();
assertTrue(interface1.equals("java.lang.Runnable" + (i+1)));
}
}
/**
* Tests a service component default values
*/
public void testDefaultValuesService() {
StringBuffer buffer = new StringBuffer();
buffer.append("<service>");
buffer.append(LF);
buffer.append("</service>");
setXMLContents(buffer, LF);
load();
IDSObject component = fModel.getDSComponent();
assertTrue(component.getChildCount() == 1);
IDocumentElementNode child = component.getChildAt(0);
assertTrue(child instanceof IDSService);
IDSService service = (IDSService) child;
assertTrue(service.getServiceFactory() == false);
}
/**
* Test to remove a provided service element from a service element.
*/
public void testRemoveChildService(){
StringBuffer buffer = new StringBuffer();
buffer.append("<service servicefactory=\"true\" >");
buffer.append(LF);
buffer.append("<provide interface=\"");
buffer.append("java.lang.Runnable\">");
buffer.append("</provide>");
buffer.append(LF);
buffer.append("</service>");
setXMLContents(buffer, LF);
load();
IDSComponent component = fModel.getDSComponent();
IDSService service = component.getService();
assertNotNull(service);
IDSProvide[] providedServices = service.getProvidedServices();
assertTrue(providedServices.length==1);
//Removing Provided Service
service.removeProvidedService(providedServices[0]);
service = component.getService();
assertNotNull(service);
assertTrue(service.getProvidedServices().length == 0);
}
/**
* Tests to add a service by DSDocumentFactory
*/
public void testAddServiceFactory(){
StringBuffer buffer = new StringBuffer();
setXMLContents(buffer , LF);
load();
IDSDocumentFactory factory = fModel.getFactory();
IDSService service = factory.createService();
service.setServiceFactory(true);
IDSComponent component = fModel.getDSComponent();
component.setService(service);
String content = component.toString();
assertTrue(content.indexOf("servicefactory=\"true\"") != -1);
IDSService service0 = component.getService();
assertNotNull(service0);
assertTrue(service0.getServiceFactory());
}
}