/*
* Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com
* The software in this package is published under the terms of the CPAL v1.0
* license, a copy of which has been included with this distribution in the
* LICENSE.txt file.
*/
package org.mule.runtime.core.config;
import org.mule.tck.junit4.AbstractMuleTestCase;
import org.mule.tck.size.SmallTest;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.assertNotNull;
@SmallTest
public class PreferredObjectSelectorTestCase extends AbstractMuleTestCase {
@Test
public void testSelectNoRegularClassIfThereIsNoPreferred() {
List<Object> classes = new ArrayList<Object>();
classes.add(new NonPreferred());
PreferredObjectSelector selector = new PreferredObjectSelector();
Object object = selector.select(classes.iterator());
assertNotNull("Selector selected a wrong object", object instanceof NonPreferred);
}
@Test
public void testSelectDefaultPreferredClassOverNoPreferredOne() {
List<Object> classes = new ArrayList<Object>();
classes.add(new NonPreferred());
classes.add(new PreferredWithDefaultWeight());
PreferredObjectSelector selector = new PreferredObjectSelector();
Object object = selector.select(classes.iterator());
assertNotNull("Selector selected a wrong object", object instanceof PreferredWithDefaultWeight);
}
@Test
public void testSelectPreferredClassWithHighestWeight() {
List<Object> classes = new ArrayList<Object>();
classes.add(new NonPreferred());
classes.add(new PreferredWithDefaultWeight());
classes.add(new PreferredWithHighestWeight());
PreferredObjectSelector selector = new PreferredObjectSelector();
Object object = selector.select(classes.iterator());
assertNotNull("Selector selected a wrong object", object instanceof PreferredWithHighestWeight);
}
public class NonPreferred {
}
@Preferred
public class PreferredWithDefaultWeight {
}
@Preferred(weight = 10)
public class PreferredWithHighestWeight {
}
}