package com.jcwhatever.nucleus.utils.observer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; public class SubscriberRunnable implements Runnable { private Subscriber _subscriber; public SubscriberRunnable() {} public SubscriberRunnable(Subscriber subscriber) { _subscriber = subscriber; } @Override public void run() { if (_subscriber == null) _subscriber = new Subscriber() {}; assertNotNull(_subscriber.getAgents()); assertEquals(0, _subscriber.getAgents().size()); SubscriberAgent agent = new SubscriberAgent() {}; _subscriber.subscribe(agent); assertEquals(1, agent.getSubscribers().size()); assertEquals(1, _subscriber.getAgents().size()); _subscriber.unsubscribe(agent); assertEquals(0, agent.getSubscribers().size()); assertEquals(0, _subscriber.getAgents().size()); _subscriber.registerReference(agent); assertEquals(0, agent.getSubscribers().size()); assertEquals(1, _subscriber.getAgents().size()); _subscriber.unregisterReference(agent); assertEquals(0, agent.getSubscribers().size()); assertEquals(0, _subscriber.getAgents().size()); } }