From 6cfe7d7845194fff5c34ad8f3ed40ff0a7220f33 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Wed, 19 Feb 2020 21:26:09 +0100 Subject: [PATCH] [New] Added RoundRobinInt with test --- .../java/li/strolch/utils/RoundRobinInt.java | 23 ++++++++++ .../li/strolch/utils/RoundRobinIntTest.java | 45 +++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 li.strolch.utils/src/main/java/li/strolch/utils/RoundRobinInt.java create mode 100644 li.strolch.utils/src/test/java/li/strolch/utils/RoundRobinIntTest.java diff --git a/li.strolch.utils/src/main/java/li/strolch/utils/RoundRobinInt.java b/li.strolch.utils/src/main/java/li/strolch/utils/RoundRobinInt.java new file mode 100644 index 000000000..8c0f7a418 --- /dev/null +++ b/li.strolch.utils/src/main/java/li/strolch/utils/RoundRobinInt.java @@ -0,0 +1,23 @@ +package li.strolch.utils; + +public class RoundRobinInt { + private int start; + private int stop; + private int index; + + public RoundRobinInt(int start, int stop) { + if (start >= stop) + throw new IllegalArgumentException( + "A round robin start >= stop does not make sense: " + start + " >= " + stop); + this.start = start; + this.stop = stop; + this.index = start; + } + + public int next() { + int next = this.index++; + if (this.index > this.stop) + this.index = this.start; + return next; + } +} diff --git a/li.strolch.utils/src/test/java/li/strolch/utils/RoundRobinIntTest.java b/li.strolch.utils/src/test/java/li/strolch/utils/RoundRobinIntTest.java new file mode 100644 index 000000000..b6ce71cb3 --- /dev/null +++ b/li.strolch.utils/src/test/java/li/strolch/utils/RoundRobinIntTest.java @@ -0,0 +1,45 @@ +package li.strolch.utils; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +public class RoundRobinIntTest { + + @Test + public void shouldDoRoundRobin0_2() { + RoundRobinInt rr = new RoundRobinInt(0,2); + assertEquals(0, rr.next()); + assertEquals(1, rr.next()); + assertEquals(2, rr.next()); + assertEquals(0, rr.next()); + assertEquals(1, rr.next()); + assertEquals(2, rr.next()); + } + @Test + public void shouldDoRoundRobin1_2() { + RoundRobinInt rr = new RoundRobinInt(1,2); + assertEquals(1, rr.next()); + assertEquals(2, rr.next()); + assertEquals(1, rr.next()); + assertEquals(2, rr.next()); + } + @Test + public void shouldDoRoundRobinNeg10_2() { + RoundRobinInt rr = new RoundRobinInt(-10,2); + assertEquals(-10, rr.next()); + assertEquals(-9, rr.next()); + assertEquals(-8, rr.next()); + assertEquals(-7, rr.next()); + assertEquals(-6, rr.next()); + assertEquals(-5, rr.next()); + assertEquals(-4, rr.next()); + assertEquals(-3, rr.next()); + assertEquals(-2, rr.next()); + assertEquals(-1, rr.next()); + assertEquals(0, rr.next()); + assertEquals(1, rr.next()); + assertEquals(2, rr.next()); + assertEquals(-10, rr.next()); + } +}