/*******************************************************************************
* Copyright (c) 2007, 2014 compeople 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:
* compeople AG - initial API and implementation
*******************************************************************************/
package org.eclipse.riena.internal.core;
import org.osgi.framework.Bundle;
import org.eclipse.riena.core.test.RienaTestCase;
import org.eclipse.riena.core.test.collect.NonUITestCase;
import org.eclipse.riena.internal.core.IRienaStartupExtension.When;
/**
* Tests of the class {@link StartupsSafeRunnable}.
*/
@NonUITestCase
public class StartupsSafeRunnableTest extends RienaTestCase {
public void testOrdering() throws Exception {
final StartupsSafeRunnable runner = new StartupsSafeRunnable();
final IRienaStartupExtension[] startups = new IRienaStartupExtension[] { create(When.BEGINNING),
create(When.END), create(When.BEGINNING), create(null), create(When.END), create(null),
create(When.BEGINNING) };
runner.update(startups);
runner.run();
int i = 0;
assertSame(When.BEGINNING, startups[i++].getWhen());
assertSame(When.BEGINNING, startups[i++].getWhen());
assertSame(When.BEGINNING, startups[i++].getWhen());
assertSame(null, startups[i++].getWhen());
assertSame(null, startups[i++].getWhen());
assertSame(When.END, startups[i++].getWhen());
assertSame(When.END, startups[i++].getWhen());
}
private IRienaStartupExtension create(final IRienaStartupExtension.When when) {
return new StartupRunnable(when);
}
private static class StartupRunnable implements IRienaStartupExtension {
private final When when;
public StartupRunnable(final IRienaStartupExtension.When when) {
this.when = when;
}
public Bundle getContributingBundle() {
return null;
}
public When getWhen() {
return when;
}
public String getRunClassName() {
return null;
}
public Runnable createRunner() {
return null;
}
public String getRequiredBundles() {
return null;
}
public boolean isActivateSelf() {
return false;
}
}
}