* @author Paul Ferraro
*/
public class PreferredSingletonElectionPolicyTestCase {
@Test
public void elect() {
SingletonElectionPolicy policy = mock(SingletonElectionPolicy.class);
Preference preference = mock(Preference.class);
ClusterNode node1 = mock(ClusterNode.class);
ClusterNode node2 = mock(ClusterNode.class);
ClusterNode node3 = mock(ClusterNode.class);
when(preference.preferred(same(node1))).thenReturn(true);
when(preference.preferred(same(node2))).thenReturn(false);
when(preference.preferred(same(node3))).thenReturn(false);
assertSame(node1, new PreferredSingletonElectionPolicy(preference, policy).elect(Arrays.asList(node1, node2)));
assertSame(node1, new PreferredSingletonElectionPolicy(preference, policy).elect(Arrays.asList(node2, node1)));
List<ClusterNode> nodes = Arrays.asList(node2, node3);
when(policy.elect(nodes)).thenReturn(node2);
assertSame(node2, new PreferredSingletonElectionPolicy(preference, policy).elect(nodes));
when(policy.elect(nodes)).thenReturn(node3);
assertSame(node3, new PreferredSingletonElectionPolicy(preference, policy).elect(nodes));
when(policy.elect(nodes)).thenReturn(null);
assertNull(new PreferredSingletonElectionPolicy(preference, policy).elect(nodes));
}