package org.limewire.xmpp.client.impl.features; import java.util.concurrent.atomic.AtomicReference; import org.jmock.Expectations; import org.jmock.Mockery; import org.jmock.api.Invocation; import org.jmock.lib.action.CustomAction; import org.limewire.friend.api.FriendPresence; import org.limewire.friend.api.feature.Feature; import org.limewire.friend.api.feature.FeatureRegistry; import org.limewire.friend.api.feature.LibraryChangedNotifierFeature; import org.limewire.friend.impl.feature.LibraryChangedNotifierFeatureInitializer; import org.limewire.util.BaseTestCase; public class LibraryChangedNotifierFeatureInitializerTest extends BaseTestCase { private Mockery context; private FriendPresence friendPresence; public LibraryChangedNotifierFeatureInitializerTest(String name) { super(name); } @Override protected void setUp() throws Exception { context = new Mockery(); friendPresence = context.mock(FriendPresence.class); } public void testRegister() { final FeatureRegistry featureRegistry = context.mock(FeatureRegistry.class); final LibraryChangedNotifierFeatureInitializer initializer = new LibraryChangedNotifierFeatureInitializer(); context.checking(new Expectations() {{ one(featureRegistry).registerPublicInitializer(LibraryChangedNotifierFeature.ID, initializer); }}); initializer.register(featureRegistry); context.assertIsSatisfied(); } public void testInitializeFeature() { final AtomicReference<LibraryChangedNotifierFeature> feature = new AtomicReference<LibraryChangedNotifierFeature>(); context.checking(new Expectations() {{ one(friendPresence).addFeature(with(any(Feature.class))); will(new CustomAction("get hold of feature") { @Override public Object invoke(Invocation invocation) throws Throwable { feature.set((LibraryChangedNotifierFeature) invocation.getParameter(0)); return null; } }); }}); LibraryChangedNotifierFeatureInitializer initializer = new LibraryChangedNotifierFeatureInitializer(); initializer.initializeFeature(friendPresence); context.assertIsSatisfied(); } }