/** Copyright 2004, 2005 The Apache Software Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* Addendum:
* The original version of this file belongs to the retired Apache HiveMind
* project: http://hivemind.apache.org/hivemind1/index.html
* The original files can be found in hivemind-1.1.jar in package org.apache.hivemind.order
*
* The original version has been modified entirely by Riena committers such:
* - removed dependencies from HiveMind
* - added generics, uses extended for loops, ..
* - adapted to Riena/Eclipse coding conventions
*/
package org.eclipse.riena.core.util;
import java.util.List;
import org.eclipse.riena.core.test.RienaTestCase;
import org.eclipse.riena.core.test.collect.NonUITestCase;
import org.eclipse.riena.core.util.Orderer.OrdererFailure;
/**
* Tests for the {@link org.apache.hivemind.order.Orderer}.
*
* @author Howard Lewis Ship
*/
@NonUITestCase
public class OrdererTest extends RienaTestCase {
public void testNoDependencies() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, null);
o.add("BARNEY", "barney", null, null);
o.add("WILMA", "wilma", null, null);
o.add("BETTY", "betty", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("FRED").list("BARNEY").list("WILMA").list("BETTY"), l);
}
public void testPrereq() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", "wilma", null);
o.add("BARNEY", "barney", "betty", null);
o.add("BETTY", "betty", null, null);
o.add("WILMA", "wilma", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("WILMA").list("FRED").list("BETTY").list("BARNEY"), l);
}
public void testPostreq() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, "barney,wilma");
o.add("BARNEY", "barney", null, "betty");
o.add("BETTY", "betty", null, null);
o.add("WILMA", "wilma", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("FRED").list("BARNEY").list("BETTY").list("WILMA"), l);
}
public void testPrePostreq() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, "barney,wilma");
o.add("BARNEY", "barney", "wilma", "betty");
o.add("BETTY", "betty", null, null);
o.add("WILMA", "wilma", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("FRED").list("WILMA").list("BARNEY").list("BETTY"), l);
}
public void testUnknownPrereq() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", "charlie", "barney,wilma");
o.add("BARNEY", "barney", "wilma", "betty");
o.add("BETTY", "betty", null, null);
o.add("WILMA", "wilma", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("FRED").list("WILMA").list("BARNEY").list("BETTY"), l);
// TODO check logging: expect logging for charlie -> fred
}
public void testUnknownPostreq() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, "barney,wilma");
o.add("BARNEY", "barney", "wilma", "betty");
o.add("BETTY", "betty", null, "dino");
o.add("WILMA", "wilma", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("FRED").list("WILMA").list("BARNEY").list("BETTY"), l);
// TODO Check logging: Unknown cartoon character dependency 'dino' (for 'betty').", null, null);
}
public void testCyclePre() {
try {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", "wilma", null);
o.add("BARNEY", "barney", "betty", null);
o.add("BETTY", "betty", "fred", null);
o.add("WILMA", "wilma", "barney", null);
final List<String> l = o.getOrderedObjects();
fail();
} catch (final OrdererFailure e) {
assertTrue(e.getMessage().contains("between 'wilma'"));
}
// assertListsEqual(new Object[] { "WILMA", "FRED", "BETTY", "BARNEY" }, l);
}
public void testCyclePost() {
try {
final Orderer<String> o = new Orderer<String>();
o.add("WILMA", "wilma", null, "betty");
o.add("FRED", "fred", null, "barney");
o.add("BARNEY", "barney", null, "wilma");
o.add("BETTY", "betty", null, "fred");
final List<String> l = o.getOrderedObjects();
fail();
} catch (final OrdererFailure e) {
assertTrue(e.getMessage().contains("between 'fred' and 'betty'"));
}
// assertListsEqual(new Object[] { "FRED", "BARNEY", "WILMA", "BETTY" }, l);
}
public void testDupe() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "flintstone", null, null);
o.add("BARNEY", "rubble", null, null);
// interceptLogging();
try {
o.add("WILMA", "flintstone", null, null);
fail();
} catch (final OrdererFailure e) {
assertTrue(e.getMessage().contains("'flintstone'"));
}
// List<String> l = o.getOrderedObjects();
//
// assertListsEqual(new Object[] { "FRED", "BARNEY" }, l);
}
public void testPreStar() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", "*", null);
o.add("BARNEY", "barney", "betty", null);
o.add("WILMA", "wilma", "betty", null);
o.add("BETTY", "betty", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("BETTY").list("BARNEY").list("WILMA").list("FRED"), l);
}
public void testPreStartDupe() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", "*", null);
o.add("BARNEY", "barney", "*", null);
o.add("WILMA", "wilma", "betty", null);
o.add("BETTY", "betty", null, null);
try {
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("BARNEY").list("BETTY").list("WILMA").list("FRED"), l);
fail();
} catch (final OrdererFailure e) {
assertTrue(e.getMessage().contains(
"More than one trailer. Conflicting 'fred' (ordered unknown) and 'barney' (last)"));
}
}
public void testPostStar() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, "wilma");
o.add("BARNEY", "barney", null, "*");
o.add("WILMA", "wilma", null, "betty");
o.add("BETTY", "betty", null, null);
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("BARNEY").list("FRED").list("WILMA").list("BETTY"), l);
}
public void testPostStarDupe() {
final Orderer<String> o = new Orderer<String>();
o.add("FRED", "fred", null, "wilma");
o.add("BARNEY", "barney", null, "*");
o.add("WILMA", "wilma", null, "*");
o.add("BETTY", "betty", null, null);
try {
final List<String> l = o.getOrderedObjects();
assertEquals(Literal.list("BARNEY").list("FRED").list("WILMA").list("BETTY"), l);
fail();
} catch (final OrdererFailure e) {
assertTrue(e.getMessage().contains(
"More than one leader. Conflicting 'barney' (ordered unknown) and 'wilma' (first)"));
}
}
public void testNoObjects() {
final Orderer<String> o = new Orderer<String>();
final List<String> l = o.getOrderedObjects();
assertEquals(0, l.size());
}
}