package com.connectsdk.discovery;
import com.connectsdk.discovery.provider.SSDPDiscoveryProvider;
import com.connectsdk.discovery.provider.ZeroconfDiscoveryProvider;
import com.connectsdk.service.DIALService;
import com.connectsdk.service.DLNAService;
import junit.framework.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import java.util.Objects;
/**
* Created by oleksii.frolov on 2/16/2015.
*/
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class DiscoveryManagerTest {
DiscoveryManager discovery;
@Before
public void setUp() {
discovery = new DiscoveryManager(Robolectric.application);
}
@Test
public void testUnregisterDeviceServiceWithWrongArguments() {
discovery.deviceClasses.put("service", DIALService.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(Objects.class, Object.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(DLNAService.class, SSDPDiscoveryProvider.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(DIALService.class, SSDPDiscoveryProvider.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
}
@Test
public void testUnregisterDeviceServiceWithWrongProvider() {
discovery.discoveryProviders.add(new SSDPDiscoveryProvider(Robolectric.application));
discovery.deviceClasses.put(DIALService.ID, DIALService.class);
Assert.assertEquals(1, discovery.discoveryProviders.size());
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(DIALService.class, ZeroconfDiscoveryProvider.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
Assert.assertEquals(1, discovery.discoveryProviders.size());
}
@Test
public void testUnregisterDeviceServiceWithWrongServiceID() {
discovery.discoveryProviders.add(new SSDPDiscoveryProvider(Robolectric.application));
discovery.deviceClasses.put(DLNAService.ID, DIALService.class);
Assert.assertEquals(1, discovery.discoveryProviders.size());
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(DIALService.class, SSDPDiscoveryProvider.class);
Assert.assertEquals(1, discovery.deviceClasses.size());
Assert.assertEquals(1, discovery.discoveryProviders.size());
}
@Test
public void testUnregisterDeviceService() {
discovery.discoveryProviders.add(new SSDPDiscoveryProvider(Robolectric.application));
discovery.deviceClasses.put(DIALService.ID, DIALService.class);
Assert.assertEquals(1, discovery.discoveryProviders.size());
Assert.assertEquals(1, discovery.deviceClasses.size());
discovery.unregisterDeviceService(DIALService.class, SSDPDiscoveryProvider.class);
Assert.assertEquals(0, discovery.deviceClasses.size());
Assert.assertEquals(0, discovery.discoveryProviders.size());
}
@Test
public void testRegisterDeviceService() {
Assert.assertEquals(0, discovery.discoveryProviders.size());
Assert.assertEquals(0, discovery.deviceClasses.size());
discovery.registerDeviceService(DIALService.class, SSDPDiscoveryProvider.class);
Assert.assertEquals(1, discovery.discoveryProviders.size());
Assert.assertEquals(1, discovery.deviceClasses.size());
}
@Test
public void testRegisterDeviceServiceWithNullValues() {
Assert.assertEquals(0, discovery.discoveryProviders.size());
Assert.assertEquals(0, discovery.deviceClasses.size());
try {
discovery.registerDeviceService(null, SSDPDiscoveryProvider.class);
Assert.fail("NullPointerException must be casted");
} catch (NullPointerException e) {}
try {
discovery.registerDeviceService(DLNAService.class, null);
Assert.fail("NullPointerException must be casted");
} catch (NullPointerException e) {}
Assert.assertEquals(0, discovery.discoveryProviders.size());
Assert.assertEquals(0, discovery.deviceClasses.size());
}
}