sb.append(device.getReceivedCount()) .append('(') .append(device.getUnreadCount())
} else if (device.get().getReceivedCount() == 0) {
} else if (device.get().getReceivedCount() == 0) {
@Override public void tick(TimeLapse timeLapse) { if (!destination.isPresent()) { destination = Optional.of(roadModel.get().getRandomPosition(rng)); } roadModel.get().moveTo(this, destination.get(), timeLapse); if (roadModel.get().getPosition(this).equals(destination.get())) { destination = Optional.absent(); } if (device.get().getUnreadCount() > 0) { lastReceiveTime = timeLapse.getStartTime(); device.get().getUnreadMessages(); device.get().broadcast(Messages.NICE_TO_MEET_YOU); } else if (device.get().getReceivedCount() == 0) { device.get().broadcast(Messages.HELLO_WORLD); } else if (lastReceiveTime > 10 * 1000) { device.get().broadcast(Messages.WHERE_IS_EVERYBODY); } }
@Test public void testBroadcastRangeWithoutMaxRange() { when(COMMUSERS[0].getPosition()).thenReturn(Optional.of(new Point(0, 0))); when(COMMUSERS[1].getPosition()).thenReturn(Optional.of(new Point(5, 0))); when(COMMUSERS[2].getPosition()).thenReturn(Optional.of(new Point(10, 0))); final CommDevice device1 = builders[0].build(); final CommDevice device2 = builders[1].build(); final CommDevice device3 = builders[2].build(); assertEquals(0, device2.getReceivedCount()); assertEquals(0, device3.getReceivedCount()); device1.broadcast(mock(MessageContents.class), 7); device1.sendMessages(); assertEquals(1, device2.getReceivedCount()); assertEquals(0, device3.getReceivedCount()); }
assertEquals(0, agent1.device().getReceivedCount()); assertEquals(0, agent1.device().getUnreadCount()); assertEquals(1, rangedNoPos.device().getOutbox().size()); assertEquals(0, agent1.device().getReceivedCount()); assertEquals(0, agent2.device().getReceivedCount()); assertEquals(0, agent3.device().getReceivedCount()); assertEquals(0, agent4.device().getReceivedCount()); assertEquals(0, agent5.device().getReceivedCount()); assertEquals(0, ranged.device().getReceivedCount()); assertEquals(0, noPos.device().getReceivedCount()); assertEquals(2, rangedNoPos.device().getOutbox().size()); final List<Message> msgs = rangedNoPos.device().getOutbox(); assertEquals(0, rangedNoPos.device().getReceivedCount()); agent1.device().send(Contents.YO, rangedNoPos); model.afterTick(TimeLapseFactory.create(0, 100)); assertEquals(1, rangedNoPos.device().getReceivedCount()); assertEquals(1, ranged.device().getOutbox().size()); model.afterTick(TimeLapseFactory.create(0, 100)); assertEquals(1, rangedNoPos.device().getReceivedCount()); assertEquals(2, agent1.device().getReceivedCount()); assertEquals(0, agent2.device().getReceivedCount()); assertEquals(0, agent3.device().getReceivedCount()); assertEquals(0, agent4.device().getReceivedCount()); assertEquals(1, agent5.device().getReceivedCount());
assertThat(agent1.device().getReceivedCount()).isEqualTo(0); assertThat(agent2.device().getReceivedCount()).isEqualTo(0);
/** * Tests what happens if an agent no longer has a position. */ @Test public void testSenderIsRemovedDuringSend() { final Agent a = new Agent(new Point(0, 0)); final Agent b = new RangedAgent(new Point(0, 0), 5); model.register(a); model.register(b); // a is removed during the same tick as that it sends a message, this // doesn't matter since it has no range, therefore it sends anyway. a.device().broadcast(Contents.YO); a.setPosition(null); model.afterTick(TimeLapseFactory.create(0, 100)); assertEquals(1, agent1.device().getReceivedCount()); // b is removed during the same tick as that is sends a message, since it is // a ranged device the message is not sent and will stay in the outbox. b.device().broadcast(Contents.YO); b.setPosition(null); model.afterTick(TimeLapseFactory.create(0, 100)); assertEquals(1, agent1.device().getReceivedCount()); assertEquals(1, b.device().getOutbox().size()); }