/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ package org.ow2.choreos.selector; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.List; import org.junit.Before; import org.junit.Test; import org.ow2.choreos.selectors.NotSelectedException; import org.ow2.choreos.selectors.RoundRobinSelector; public class RoundRobinSelectorTest { private StringRetriever retriever; @Before public void setup() { this.retriever = new StringRetriever(); this.retriever.addObject("Object1"); this.retriever.addObject("Object2"); this.retriever.addObject("Object3"); } @Test public void shouldApplyRoundRobin() throws NotSelectedException { RoundRobinSelector<String, String> rr = new RoundRobinSelector<String, String>(retriever); String requirements = "requirements"; int quantity = 1; List<String> a = rr.select(requirements, quantity); List<String> b = rr.select(requirements, quantity); List<String> c = rr.select(requirements, quantity); List<String> d = rr.select(requirements, quantity); assertEquals(quantity, a.size()); assertEquals(quantity, b.size()); assertEquals(quantity, c.size()); assertEquals(quantity, d.size()); assertFalse(a.get(0).equals(b.get(0))); assertFalse(a.get(0).equals(c.get(0))); assertFalse(c.get(0).equals(b.get(0))); assertTrue(a.get(0).equals(d.get(0))); quantity = 2; List<String> aa = rr.select(requirements, quantity); List<String> bb = rr.select(requirements, quantity); assertEquals(quantity, aa.size()); assertEquals(quantity, bb.size()); assertFalse(aa.get(0).equals(aa.get(1))); assertFalse(aa.get(1).equals(bb.get(0))); assertTrue(aa.get(0).equals(bb.get(1))); } @Test(expected = NotSelectedException.class) public void shouldNotSelect() throws NotSelectedException { RoundRobinSelector<String, String> rr = new RoundRobinSelector<String, String>(retriever); String requirements = "requirements"; int tooLargeQuantity = 5; rr.select(requirements, tooLargeQuantity); } }