public RateCounter (int limit, Duration period) { reset(limit, period); }
@Test public void immediatelyCounts() throws Exception { int limit = 5; int seconds = 1; RateCounter rc = new RateCounter(limit, Duration.ofSeconds(seconds)); assertEquals(limit, rc.pulsesLeft()); assertEquals(limit, rc.getPulseLimit()); assertEquals(seconds, rc.getDuration().getSeconds()); rc.countPulse(); // 1 rc.countPulse(); // 2 rc.countPulse(); // 3 assertEquals(true, rc.countPulse()); // 4 assertEquals(true, rc.countPulse()); // 5 assertEquals(0, rc.pulsesLeft()); assertEquals(false, rc.countPulse()); // 6 assertEquals(-1, rc.pulsesLeft()); }
@Override public void run() { if(counts < limit) assertEquals(true, rc.countPulse()); else assertEquals(false, rc.countPulse()); counts++; System.out.println("counts: " + counts); if(counts >= maxCounts) { cancel(); ae.fire(); } } }, 0, 100);
int limit = 5; int seconds = 1; RateCounter rc = new RateCounter(limit, Duration.ofSeconds(seconds)); assertEquals(limit, rc.pulsesLeft()); assertEquals(limit, rc.getPulseLimit()); assertEquals(seconds, rc.getDuration().getSeconds()); rc.countPulse(); // 1 rc.countPulse(); // 2 rc.countPulse(); // 3 if(file.exists()) file.delete(); System.out.println(rc.millisecondsLeft() + " <-> " + rc2.millisecondsLeft()); assertEquals(rc.getPulseLimit(), rc2.getPulseLimit()); assertEquals(rc.getDuration().getSeconds(), rc2.getDuration().getSeconds()); assertEquals(rc.pulsesLeft(), rc2.pulsesLeft()); assertEquals(rc.millisecondsLeft(), rc2.millisecondsLeft()); assertEquals(true, rc2.countPulse()); // 4 assertEquals(true, rc2.countPulse()); // 5 assertEquals(0, rc2.pulsesLeft()); assertEquals(false, rc2.countPulse()); // 6 assertEquals(-1, rc2.pulsesLeft());
@Override public void run() { assertEquals(true, rc.countPulse()); counts++; System.out.println("counts: " + counts); if(counts >= maxCounts) { cancel(); ae.fire(); } } }, 0, 300);
int limit = 5; int seconds = 1; RateCounter rc = new RateCounter(limit, Duration.ofSeconds(seconds)); Timer timer = new Timer(); assertEquals(limit, rc.pulsesLeft()); assertEquals(limit, rc.getPulseLimit()); assertEquals(seconds, rc.getDuration().getSeconds()); System.out.println("time is up"); assertEquals(1, rc.pulsesLeft()); assertEquals(true, rc.countPulse()); assertEquals(false, rc.countPulse()); assertEquals(-1, rc.pulsesLeft());
@Override public void run() { assertEquals(true, rc.countPulse()); counts++; System.out.println("counts: " + counts); if(counts >= maxCounts) { cancel(); ae.fire(); } } }, 0, 100);
int limit = 5; int seconds = 1; RateCounter rc = new RateCounter(limit, Duration.ofSeconds(seconds)); Timer timer = new Timer(); assertEquals(limit, rc.pulsesLeft()); assertEquals(limit, rc.getPulseLimit()); assertEquals(seconds, rc.getDuration().getSeconds()); System.out.println("time is up"); assertEquals(0, rc.pulsesLeft()); assertEquals(false, rc.countPulse()); // 6 assertEquals(-1, rc.pulsesLeft());
int limit = 5; int seconds = 1; RateCounter rc = new RateCounter(limit, Duration.ofSeconds(seconds)); Timer timer = new Timer(); assertEquals(limit, rc.pulsesLeft()); assertEquals(limit, rc.getPulseLimit()); assertEquals(seconds, rc.getDuration().getSeconds()); System.out.println("time is up"); assertEquals(-3, rc.pulsesLeft()); assertEquals(false, rc.countPulse());