Sunday, May 19, 2013

Round Robin in JAVA




  1. package test;  
  2.    
  3. import java.util.ArrayList;  
  4. import java.util.Iterator;  
  5. import java.util.List;  
  6.    
  7. import junit.framework.TestCase;  
  8.    
  9. class Robin {  
  10. private int i;  
  11.    
  12. public Robin(int i) {  
  13. this.i = i;  
  14. }  
  15.    
  16. public int call() {  
  17. return i;  
  18. }  
  19. }  
  20.    
  21. class RoundRobin {  
  22. private Iterator it;  
  23. private List list;  
  24.    
  25. public RoundRobin(List list) {  
  26. this.list = list;  
  27. it = list.iterator();  
  28. }  
  29.   
  30. public int next() {  
  31. // if we get to the end, start again  
  32. if (!it.hasNext()) {  
  33. it = list.iterator();  
  34. }  
  35. Robin robin = it.next();  
  36.   
  37. return robin.call();  
  38. }  
  39. }  
  40.    
  41. public class RoundRobinTest extends TestCase {  
  42. List items = new ArrayList();  
  43. RoundRobin round;  
  44.   
  45. public void testOne() {  
  46. items.add(new Robin(1));  
  47. round = new RoundRobin(items);  
  48. assertEquals(1, round.next());  
  49. assertEquals(1, round.next());  
  50. }  
  51.   
  52. public void testTwo() {  
  53. items.add(new Robin(1));  
  54. items.add(new Robin(2));  
  55. round = new RoundRobin(items);  
  56. assertEquals(1, round.next());  
  57. assertEquals(2, round.next());  
  58. assertEquals(1, round.next());  
  59. assertEquals(2, round.next());  
  60. }  
  61.   
  62. public void testThree() {  
  63. items.add(new Robin(1));  
  64. items.add(new Robin(2));  
  65. items.add(new Robin(3));  
  66. round = new RoundRobin(items);  
  67. assertEquals(1, round.next());  
  68. assertEquals(2, round.next());  
  69. assertEquals(3, round.next());  
  70. assertEquals(1, round.next());  
  71. assertEquals(2, round.next());  
  72. assertEquals(3, round.next());  
  73. }  
  74. }  

No comments: