package com.jcwhatever.nucleus.utils.observer.update;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import java.util.ArrayList;
import java.util.List;
public class UpdateAgentTest {
@Test
public void basicTest() {
final List<String> updateResults = new ArrayList<>(10);
final UpdateAgent<String> agent = new UpdateAgent<>();
UpdateSubscriber<String> subscriber = new UpdateSubscriber<String>() {
@Override
public void on(String argument) {
updateResults.add(argument);
}
};
assertEquals(0, agent.getSubscribers().size());
agent.addSubscriber(subscriber);
// ensure subscriber is added to agent
assertEquals(1, agent.getSubscribers().size());
// ensure agent added itself to subscriber
assertEquals(1, subscriber.getAgents().size());
// test update
agent.update("testUpdate");
// ensure the event was called on the subscriber
assertEquals(1, updateResults.size());
updateResults.clear();
// test unregister
agent.removeSubscriber(subscriber);
// ensure subscriber is removed from agent
assertEquals(0, agent.getSubscribers().size());
// ensure the agent removed itself from the subscriber
assertEquals(0, subscriber.getAgents().size());
// test update
agent.update("testUpdate");
// ensure the event was NOT called on the subscriber
assertEquals(0, updateResults.size());
}
}