/**
* Copyright (C) 2010 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: Ali Erdem Ozcan
*/
package org.ow2.mind.plugin;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertNotNull;
import static org.testng.Assert.assertSame;
import static org.testng.Assert.assertTrue;
import java.net.URL;
import java.net.URLClassLoader;
import org.ow2.mind.plugin.util.BooleanEvaluatorHelper;
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.Test;
import com.google.common.collect.Iterables;
import com.google.inject.AbstractModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import com.google.inject.name.Names;
import com.google.inject.util.Modules;
public class BasicTest {
PluginManager pluginManager;
@BeforeMethod(alwaysRun = true)
public void setUpNodeFactory() {
final URL url1 = this.getClass().getClassLoader()
.getResource("com.st.p2012.memory/");
assertNotNull(url1);
final URL url2 = this.getClass().getClassLoader()
.getResource("org.ow2.mind.mindc/");
assertNotNull(url2);
final Injector injector = Guice.createInjector(Modules.override(
new PluginLoaderModule()).with(new AbstractModule() {
@Override
public void configure() {
bind(ClassLoader.class).annotatedWith(
Names.named(BasicPluginManager.PLUGIN_CLASS_LOADER)).toInstance(
new URLClassLoader(new URL[]{url1, url2}));
}
}));
pluginManager = injector.getInstance(PluginManager.class);
}
@Test(groups = {"functional"})
public void test1() throws Exception {
final Iterable<Extension> extensions = pluginManager
.getExtensions("org.ow2.mind.mindc.cpl");
assertNotNull(extensions);
assertEquals(Iterables.size(extensions), 1);
final Extension extension = extensions.iterator().next();
assertNotNull(extension);
assertEquals(extension.getExtensionPointID(), "org.ow2.mind.mindc.cpl");
final Iterable<ConfigurationElement> elems = extension
.getConfigurationElements();
assertEquals(Iterables.size(elems), 1);
final ConfigurationElement element = elems.iterator().next();
assertEquals(element.getName(), "cpl");
assertEquals(element.getAttribute("class"), "foo.bar");
assertSame(extension.getConfigurationElements("cpl").iterator().next(),
element);
final ConfigurationElement child = element.getChild("enableWhen");
assertNotNull(child);
final ConfigurationElement condition = child.getChild();
assertNotNull(condition);
assertTrue(BooleanEvaluatorHelper.evaluate(condition, pluginManager, null));
}
}